Есть некоторые Jpg-изображения, которые Delphi, похоже, не нравится. Похоже, что это касается файлов, которые я загружаю. И процедура проста: a) загрузите изображение Jpg в TJpegImage
, b) Назначьте объект Jpg объекту TBitmap
и c) сохраните и/или покажите изображение Bmp. По какой-то причине эти фотографии продолжают выходить с синим оттенком.
Эти изображения отлично отображаются везде и везде, где я их загружаю (просмотрщик изображений в окнах, краска, фотошоп и т.д.).
И то, что я делаю, очень просто...
procedure Load;
var
J: TJpegImage;
B: TBitmap;
begin
J:= TJpegImage.Create;
B:= TBitmap.Create;
J.LoadFromFile('C:\SomeFile.jpg');
B.Assign(J);
//Either save or display 'B' and it appears blueish at this point
....
Я хочу как можно больше избежать каких-либо сторонних материалов. Эта проблема существует в Delphi версии 7, 2010 и XE2. По крайней мере, элемент управления TImage в XE2 отображает его правильно (в отличие от предыдущих двух), но это не имеет значения, если TBitmap все еще не работает. Что не так с этим файлом? И/или, что не так с рендерингом Delphi?
Добавлена информация
Недавно я узнал об этих изображениях. Когда они пришли от поставщиков (изображения продукта), они были в формате CMYK. В то время Delphi 7 неправильно поддерживала эти файлы (с нарушениями доступа и плохими изображениями), поэтому все изображения были отфильтрованы через конвертер в формат RGB. Многие оригинальные изображения были также TIFF и были преобразованы в JPG. Таким образом, похоже, что программное обеспечение FastStone Image Resizer
не должно правильно сохранять эти файлы, когда они проходят. Синее изображение не происходит на всех из них, просто несколько случайных партий за раз. Программное обеспечение обрабатывает тысячи продуктов, поэтому есть тысячи возможных изображений.