Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
8-1143449543
kmi
2006-03-27 12:52
2006.10.29
Сохранение TBitMap в формате JPEG


2-1160647533
svt
2006-10-12 14:05
2006.10.29
Подскажите пожайлусата как ограничить ввод в edit только


2-1160992971
vegarulez
2006-10-16 14:02
2006.10.29
Народ, подскажите компоненту для обмена по протоколу HTTPS.


15-1160576251
Гарри Поттер
2006-10-11 18:17
2006.10.29
Поиск в Опера 9


15-1159946070
Holy
2006-10-04 11:14
2006.10.29
Посоветуйте векторный граф.редактор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский