Главная страница
    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
15-1217311137
TUser
2008-07-29 09:58
2008.09.21
Установка Линукса на рейд 1


2-1218377845
mefodiy
2008-08-10 18:17
2008.09.21
Количество записей в отфильтрованной ADOQuery


2-1218013540
witaly
2008-08-06 13:05
2008.09.21
узлы в TreeView


2-1218107041
_Джо_
2008-08-07 15:04
2008.09.21
StrToDate


2-1218386852
comovets
2008-08-10 20:47
2008.09.21
TTreeView - просмотреть все дочерние узлы одного узла





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