/// <summary> /// Return the hash of the specified file, calculated using the specified hash algorithm. /// </summary> /// <param name="algorithm"></param> /// <param name="filePath"></param> /// <returns></returns> public static ImageHash HashImage(HashAlgorithm algorithm, string filePath) { ImageHash hash; switch (algorithm) { case HashAlgorithm.DCT: ulong DCTHash; NativeFunctions.ph_dct_imagehash(filePath, out DCTHash); hash = new DCTHash(DCTHash); break; case HashAlgorithm.Radial: NativeStructures.Digest digest; NativeFunctions.ph_image_digest(filePath, 1, 1, out digest); hash = new RadialHash(digest); break; case HashAlgorithm.MH: int count; IntPtr hashBytes = NativeFunctions.ph_mh_imagehash(filePath, out count); hash = new MHHash(hashBytes, count); break; default: throw new NotImplementedException(); } return(hash); }
/// <summary> /// Return the hash of the specified file, calculated using the specified hash algorithm. /// </summary> /// <param name="algorithm"></param> /// <param name="filePath"></param> /// <returns></returns> public static ImageHash HashImage(HashAlgorithm algorithm, string filePath) { ImageHash hash; switch (algorithm) { case HashAlgorithm.DCT: ulong DCTHash; NativeFunctions.ph_dct_imagehash(filePath, out DCTHash); hash = new DCTHash(DCTHash); break; case HashAlgorithm.Radial: NativeStructures.Digest digest; NativeFunctions.ph_image_digest(filePath, 1, 1, out digest); hash = new RadialHash(digest); break; case HashAlgorithm.MH: int count; IntPtr hashBytes = NativeFunctions.ph_mh_imagehash(filePath, out count); hash = new MHHash(hashBytes, count); break; default: throw new NotImplementedException(); } return hash; }