У меня есть метод в С#, который делает только свои LockBits, а затем UnlockBits, а изображения (ввод/вывод, преобразованные в байтовые массивы) разные. Тот, что на выходе, имеет меньше 100 с чем-то байтов, чем тот, что на входе. Это происходит только с файлами .jpg. И проверив файлы в HxD я пришел к пониманию что это удаление части шапки, точнее подписи exif. Но я не знаю, как и почему.
Кто-нибудь знает, что это делает?
Вот код:
public Image Validate (image){
BitmapData original = null;
Bitmap originalBMP = null;
try{
originalBMP = image as Bitmap;
original = originalBMP.LockBits(new Rectangle(0, 0,
originalBMP.Width, originalBMP.Height),
ImageLockMode.ReadWrite,
originalBMP.PixelFormat);
originalBMP.UnlockBits(original);
}catch{}
return image;
}
LockBits
блокирует доступ к битам растрового изображения, но не изменяет их. Что касается EXIF - ваш код не загружает и не сохраняет данные EXIF. Он работает с несжатыми растровыми данными, которые могут быть получены или не получены из файла, содержащего данные EXIF. Ваш код сохранения преобразует эти растровые данные в JPG и сохраняет данные EXIF. - person Panagiotis Kanavos   schedule 21.01.2020