Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Вниз

Цветовые схемы в работе с jpg (инструмент IJL)   Найти похожие ветки 

 
Pasha L ©   (2007-08-04 13:24) [0]

Здравствуйте. Для работы с jpeg я использую IJL. Возникли несколько вопросов про цвет.Я кодирую TBitmap (код, именно в таком виде - работает исправно):
function encodeJPEG(var size:cardinal;bmp:TBitmap):pbyte;
var
 jpegprops : TJPEG_CORE_PROPERTIES;
 iNChannels : Integer;
 DIB : TDIBSection;
 pBuf:pbyte;
begin
 ijlInit(@jpegprops);
 FillChar(DIB,SizeOf(DIB),0);
 GetObject(bmp.Handle,SizeOf(DIB),@DIB);
 iNChannels := 3;
 jpegprops.DIBWidth := DIB.dsBm.bmWidth;
 jpegprops.DIBHeight := -DIB.dsBm.bmHeight;
 jpegprops.DIBChannels := iNChannels;
 jpegprops.DIBColor := IJL_BGR;
 jpegprops.DIBPadBytes := ((((DIB.dsBm.bmWidth*iNChannels)+3) div 4)*4)-(DIB.dsBm.bmWidth*3);
 size:=DIB.dsBm.bmWidth*DIB.dsBm.bmHeight*iNChannels;
 jpegprops.DIBBytes := PByte(DIB.dsBm.bmBits);
 pBuf:=AllocMem(size);
 jpegprops.JPGSizeBytes := size;
 jpegprops.JPGBytes := pBuf;
 jpegprops.JPGFile := nil;
 jpegprops.JPGWidth := DIB.dsBm.bmWidth;
 jpegprops.JPGHeight := DIB.dsBm.bmHeight;
 jpegprops.JPGChannels := 3;
 jpegprops.JPGColor := IJL_YCBCR;
 jpegprops.jquality := 0;
 jpegprops.jprops.JPGFile:=nil;
 jpegprops.jprops.state.hFile := nil;
 ijlWrite(@jpegprops,IJL_JBUFF_WRITEWHOLEIMAGE);
 ReallocMem(pBuf,jpegprops.JPGSizeBytes);
 size:=jpegprops.JPGSizeBytes;
 ijlFree(@jpegprops);
 result:=pbuf;
end;


(Для просмотра полученного jpg вывожу его в файл)

В данном случае, когда всё правильно работает:

№1
jpegprops.DIBColor=IJL_BGR
jpegprops.JPGColor=IJL_YCBCR

cледовательно, в моем tbitmap цвета представлены в виде BGR, IJL переводит эту схему в YCbCr (об этом прочитал в википедии :) )

Экспериментирую:

№2
jpegprops.DIBColor=IJL_RGB
jpegprops.JPGColor=IJL_YCBCR

у полученного jpeg меняются местами красный и синий каналы (при просмотре это видно)

№3
jpegprops.DIBColor=IJL_YCBCR
jpegprops.JPGColor=IJL_YCBCR

вообще другая интерпретация цветов - всё в порядке, как и должно быть

№5
jpegprops.DIBColor=IJL_RGB
jpegprops.JPGColor=IJL_RGB

кодировка удается, но изображение получается более расплывчатым, чем в №1. Почему?

№5
jpegprops.DIBColor=IJL_BGR
jpegprops.JPGColor=IJL_BGR

вроде, должно полуиться то же, что в №4. Но кодировка не удается (ijlWrite=-8). Почему?

Далее
Как я понимаю, буква А в IJL_RGBA_FPX и IJL_YCBCRA_FPX означает alpha. Вопрос: как задействовать этот канал? Допустим, есть bmp - хочу, чтобы у jpg, который я получу их этого bmp, слева направо прозрачность уменьшалась.

Заранее спасибо.


 
Pasha L ©   (2007-08-04 14:00) [1]

очепятка: после №3, как известно :) , следует №4



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
4-1196809281
GanibalLector
2007-12-05 02:01
2008.09.21
EFOpenError Процесс не может получить доступ к файлу


15-1217591906
oldman
2008-08-01 15:58
2008.09.21
Завтра выходной, будут не все. Примите поздравления заранее...


15-1217231960
Пробежал...
2008-07-28 11:59
2008.09.21
Насчет пустой строки


2-1218436632
dest81
2008-08-11 10:37
2008.09.21
Действие при зажатой клавише


2-1218439126
Нов_и_чок
2008-08-11 11:18
2008.09.21
Из ASCII в ANSI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский