Страница 1 из 1

DELPHI WinAPI GDI+. Масштабировать JPG ( изменить размер ).

Добавлено: 12 окт 2010, 22:16
kachkarvv
DELPHI WinAPI GDI+. Масштабировать JPG ( изменить размер ).
Программа устанавливает ширину изображения 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.