縮小した画像をファイルに保存するには?

解決


chie  2013-02-02 22:53:54  No: 43722

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;


KHE00221  2013-02-03 00:42:41  No: 43723

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;


chie  2013-02-03 01:57:46  No: 43724

KHE00221様

これは全く理解を超えた答えで、とうてい私にはできない内容でした。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加