![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена палитры в TGPImage --- GDI+ [D7, WinXP]
Andy BitOff © (2006-12-27 03:33:00)Загружаю *.tif как поменять палитру на монохромную (256 цветов)?
Andy BitOff (2007-01-03 20:33:00) [1]Вот что получилось у меня:
procedure TForm1.ButtonClick(Sender: TObject);
var
encoderClsid: TGUID;
graphics: TGPGraphics;
Image: TGPImage;
ImageAttributes: TGPImageAttributes;
width, height: Integer;
const
colorMatrix : TColorMatrix =
((0.3, 0.3, 0.3, 0.0, 0.0),
(0.59, 0.59, 0.59, 0.0, 0.0),
(0.11, 0.11, 0.11, 0.0, 0.0),
(0.0, 0.0, 0.0, 1.0, 0.0),
(0.0, 0.0, 0.0, 0.0, 1.0));
begin
GetEncoderClsid('image/tiff', encoderClsid);
Image := TGPImage.Create('1.tif');
graphics := TGPGraphics.Create(Image);
ImageAttributes := TGPImageAttributes.Create;
try
imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlagsDefault, ColorAdjustTypeBitmap);
graphics.DrawImage(Image, MakeRect(0, 0, width, height),
0, 0, width, height, UnitPixel, imageAttributes);
image.Save('3.tif', encoderClsid);
finally
Image.Free;
ImageAttributes.Free;
graphics.Free;
end;
end;
Но существует еще проблема. PixelFormat надо бы пивести к 8bits. Может кто знает?