Получить размер битмапа в байтах - C#

Узнай цену своей работы

Формулировка задачи:

Привет, помогите разобраться со скоростью) У меня есть куча изображений, которые я рисую и идентифицирую по размеру в байтах (т.е., бывают повторяющиеся изображения, и если у битмапов размер одинаковый, то в дальнейшем я их проверяю на схожесть). Я сделал функцию, которая берет битмап и возвращает его размер в байтах.
 //получает размера битмапа в байтах
        private int GetBitmapLength(Bitmap img)
        {
            ImageConverter converter = new ImageConverter();
            byte[] bytes = (byte[])converter.ConvertTo(img, typeof(byte[]));
            return bytes.Length;            
        }
Но она медленная и повышает время работы проги в разы. Еще пробовал сохранять в memory stream, и брать его длину. Можно это как-то сделать быстрее?
Или так, по каким свойствам еще можно установить уникальность картинок? Я сразу подумал на размер в байтах... что-нибудь еще уникальное можно из битмапа вытянуть, что для каждой картинки свое?

Решение задачи: «Получить размер битмапа в байтах»

textual
Листинг программы
//получает md5 хэш изображения
        private string GetImageHash(Bitmap img)
        {
            byte[] rawImageData = new byte[256 * 256];
            BitmapData bmpd = img.LockBits(new Rectangle(0, 0, 256, 256),
                                                   ImageLockMode.ReadOnly,
                                                   img.PixelFormat);
            Marshal.Copy(bmpd.Scan0, rawImageData, 0, 256 * 256);
            img.UnlockBits(bmpd);
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] hash = md5.ComputeHash(rawImageData);
            StringBuilder sBuilder = new StringBuilder();
            for (int i = 0; i < hash.Length; i++)
            {
                sBuilder.Append(hash[i].ToString("x2"));
            }
            return sBuilder.ToString();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы