GDI+ で縮小した JPG の保存方法

解決


初心者  2013-07-30 11:29:08  No: 44940

Jpeg画像を縮小してファイルに保存したいです。以前(2013年2月)に同じ
質問があり、KHE00221 さんから以下の回答がありました。

KHE00221 2013/02/02(土) 15:42:41

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;

ところが私の環境では

Bitmap2.SetSize(Round(W),Round(H));

のところでエラーが出て、コンパイルすらできませんでした。試行錯誤で

Bitmap2.Width  := Round(W);
Bitmap2.Height := Round(H);

と変更してコンパイルは通しましたが、それでもなお、Penguins2.jpg には
画像が書き込みできていません。どうすれば KHE00221 のサンプルが正しく
動くようになるでしょうか?  すみませんが教えてください。


初心者  2013-07-30 11:35:44  No: 44941

すみません! 勘違いしていました!

KHE00221 さんのサンプルは正しく動作しました!本当にごめんなさい。
できれば、この発言は「削除」してくださると助かります。


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

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






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