DELPHI WinAPI GDI+. Масштабировать JPG ( изменить размер ).
Добавлено: 12 окт 2010, 22:16
DELPHI WinAPI GDI+. Масштабировать JPG ( изменить размер ).
Программа устанавливает ширину изображения IMAGE.jpg равной 130 ( высота установится сама ). Исходное изображение может быть любого формата JPG, PNG, GIF и BMP, переименованные в IMAGE.jpg, результирующее изображение тоже IMAGE.jpg всегда будет формата JPG.
IMAGE.jpg должен быть в той же папке, что и EXE-файл.
Программа устанавливает ширину изображения IMAGE.jpg равной 130 ( высота установится сама ). Исходное изображение может быть любого формата JPG, PNG, GIF и BMP, переименованные в IMAGE.jpg, результирующее изображение тоже IMAGE.jpg всегда будет формата JPG.
IMAGE.jpg должен быть в той же папке, что и EXE-файл.
Код: Выделить всё
program jpg_gdi_scale;
//add path: Toolls->Environtment...->Library->LibraryPath->Add->GDI folder
uses Windows, Messages, GDIPAPI, GDIPOBJ,GDIPUTIL;
var
in_img, out_img: TGPImage;
g: TGPGraphics;
out_width, out_height: Integer;
sclx:extended; fname:string;
encoderClsid: TGUID;
begin
fname:='IMAGE.jpg'; out_width :=130;
in_img := TGPImage.Create(fname);
sclx:=130/in_img.GetWidth;
if sclx <> 1 then
begin
out_height :=round(in_img.GetHeight*sclx);
out_img :=TGPBitmap.Create(out_width,out_height);
g := TGPGraphics.Create(out_img);
g.DrawImage(in_img, MakeRect(0, 0, out_width, out_height),
0, 0, in_img.GetWidth, in_img.GetHeight, UnitPixel);
g.Destroy;
in_img.Free; //иначе надо сохранять не в (fname) а (NOTfname)
GetEncoderClsid('image/jpeg', encoderClsid);
out_img.Save(fname, encoderClsid);
end;
end.