Jpeg画像を縦横サイズ的に縮小してファイルに保存したいです。
色々と調べて、GDIを使うと綺麗に縮小画像ができることがわかりました。(下記のコードです)
しかし、これをファイルに保存する方法が、どうしてもわかりません。
どなたか教えて頂けませんか?
よろしくお願いいたします。
開発環境 Delphi XE , Windows7 64bit
uses に GDIPAPI ,GDIPOBJ を追加;
procedure TForm1.Button1Click(Sender: TObject);
var
graphics : TGPGraphics;
bmp: TGPBitmap;
w, h: double;
begin
graphics := TGPGraphics.Create(Canvas.Handle);
bmp := TGPBitmap.Create('test.jpg');
try
w :=bmp.GetWidth * 0.2;
h :=bmp.GetHeight * 0.2;
graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);
graphics.DrawImage(bmp, MakeRect(0, 0, w, h));
finally
bmp.Free;
graphics.Free;
end;
end;
TGPGraphics はキャンバスなので保存機能が無いので
描画先を
TGPGraphics.Create(Bitmap2.Canvas.Handle);
でビットマップに変えて、
縮小後 Jpeg に変換して保存
procedure TForm4.Button1Click(Sender: TObject);
var
graphics : TGPGraphics;
bmp: TGPBitmap;
w, h: double;
Bitmap2: TBitmap;
Jpeg: TJpegImage;
begin
Jpeg := TJpegImage.Create;
Bitmap2 := TBitmap.Create;
bmp := TGPBitmap.Create('Penguins.jpg');
w :=bmp.GetWidth * 0.2;
h :=bmp.GetHeight * 0.2;
Bitmap2.SetSize(Round(W),Round(H));
graphics := TGPGraphics.Create(Bitmap2.Canvas.Handle);
try
graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);
graphics.DrawImage(bmp, MakeRect(0, 0, w, h));
finally
bmp.Free;
graphics.Free;
end;
Jpeg.Assign(Bitmap2);
Jpeg.SaveToFile('Penguins2.jpg');
Bitmap2.Free;
Jpeg.Free;
end;
KHE00221様
これは全く理解を超えた答えで、とうてい私にはできない内容でした。
ありがとうございました。
ツイート | ![]() |