Форум: "Media";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизСохранение TBitMap в формате JPEG Найти похожие ветки
← →
kmi (2006-03-27 12:52) [0]Друзья, помогите решить проблемку. У меня есть объект TBitMap, изображение которого нужно сохранить в JPEG с качеством не ниже 90, затем распознать это изображение.
Я делаю так:var
Bmp: TBitMap;
JPG: TJPEGImage;
Bmp := MCD.GetBitmap; // получаю изображение
if (Bmp = nil) // проверяю
then
begin
MCD.ShowErrorMsg("Ошибка");
Exit;
end;
JPG := TJPEGImage.Create; // модуль JPEG указан в uses
try
JPG.Assign(BMP); // присваиваю данные из TBitMap
JPG.PixelFormat := jf24Bit; // указываю формат
JPG.SaveToFile(AppPath + "Images\Psp.jpg"); // сохраняю
finally
JPG.Free;
end;
Файл сохраняется, открывается в любом редакторе, но... вызывает ошибку при распознании. Подскажите, в чем ошибка или како другой способ сохранения TBitMap в JPEG-файл.
← →
SamBrook © (2006-03-27 13:59) [1]JPG.Compress забыли.
Вот так работает:
procedure tbitmaptojpgfile(bitmap:tbitmap;
compressionlevel:byte;
jpgfilename:string);
var jpg:tjpegimage;
begin
jpg:=tjpegimage.create;
with jpg do
try
Assign(bitmap);
CompressionQuality:=compressionlevel;
Smoothing:=true;
Compress;
SaveToFile(jpgfilename);
finally
free;
end;
end;
← →
kmi (2006-03-27 15:44) [2]Пробовал. Задавал JPG.CompressionQuality:=100, но все равно не помогает.
← →
kmi (2006-03-27 15:52) [3]Заметил, что даже если я беру заведомо распознаваемый jpg-файл, загружаю в TBitMap, а затем сохраняю указанным способом, новый файл не распознается и при этом "худеет" вдвое при тех же размерах.
← →
SamBrook © (2006-03-27 16:32) [4]Видимо у Вас tbitmap содержит DDB а не DIB.
Т.Е. надо перед сохранением проверять:
if bitmap.handleType<>bmDIB then //скверно ругаться
← →
kmi (2006-03-27 17:00) [5]Возвращает BMP.HandleType = bmDIB, здесь все в норме.
← →
SamBrook © (2006-03-27 17:12) [6]А pixelformat какой?
Попробуйте принудительно pf24bit
← →
kmi (2006-03-27 21:12) [7]pf24bit прогресса не дает, хотя размер файла сохраняется при конверсии JPEG - TBitmap - JPEG.
← →
kmi (2006-03-28 11:26) [8]Нашел возможную причину: разрешение 96 точек на дюйм, а надо 300.
Подскажите, как сохранить изображение в JPEG с нужным разрешением.
← →
kmi (2006-03-28 17:54) [9]Причина сбоя - разрешение сохраняемого изображения. Для нормального распознания нужно около 300 dpi, а Delphi сохраняет всегда с 96 dpi.
← →
kmi (2006-03-28 23:02) [10]Решение см. http://delphimaster.net/view/8-1143532496/
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c