Вниз
Скачать: CL | DM;

Сохранение 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
15-1159680143
Александр_
2006-10-01 09:22
2006.10.29
Перевести с бумаги в AutoCAD


1-1158477840
так себе
2006-09-17 11:24
2006.10.29
печать конвертов


15-1159959558
Knight
2006-10-04 14:59
2006.10.29
Есть компонент в котором реализуется функциона из статьи Роуза?


3-1157479783
DBE
2006-09-05 22:09
2006.10.29
paradox на другом компе


3-1157456213
Mishenka
2006-09-05 15:36
2006.10.29
Как в запросе сделать сортировку по нескольким полям?




   Наверх