A simple example based on a sample on MSDN ; note that this hash is dependent on the internal representation of the image and will not match the hash created from the file.
using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Security.Cryptography; using System.Text; class Program { static string getMd5Hash(byte[] buffer) { MD5 md5Hasher = MD5.Create(); byte[] data = md5Hasher.ComputeHash(buffer); StringBuilder sBuilder = new StringBuilder(); for (int i = 0; i < data.Length; i++) { sBuilder.Append(data[i].ToString("x2")); } return sBuilder.ToString(); } static byte[] imageToByteArray(Image image) { MemoryStream ms = new MemoryStream(); image.Save(ms, ImageFormat.Bmp); return ms.ToArray(); } static void Main(string[] args) { Image image = Image.FromFile(@"C:\tmp\Jellyfish.jpg"); byte[] buffer = imageToByteArray(image); string md5 = getMd5Hash(buffer); } }
To be able to use the MD5 class, you need to add a reference to System.Security .
Depending on what you intend to use for the hash, you should consider the fact that MD5 is no longer up to date and that there are better hash functions if you need a strong hash.
Dirk vollmar
source share