Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.21;
Скачать: CL | DM;

Вниз

Цветовые схемы в работе с 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 вся ветка

Текущий архив: 2008.09.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
15-1217229349
Пробежал...
2008-07-28 11:15
2008.09.21
Хранилище данных


15-1217311137
TUser
2008-07-29 09:58
2008.09.21
Установка Линукса на рейд 1


11-1193406974
Trible
2007-10-26 17:56
2008.09.21
Немного изменить KOLReport, как?


2-1218475782
Павлик
2008-08-11 21:29
2008.09.21
Количество записей в таблице


15-1217507399
ekto
2008-07-31 16:29
2008.09.21
Подскажите профайлер для D7. Басплатный.