2016 年 3 月 24 日、私は 76 歳で、それを書いたときは理にかなっていると思いましたが、他のみんなと同じように、何を求めていたのかわかりません。これは、私がインターネットを精査してまとめたものです (あまりきれいではありません)。ほとんど機能しますが、欠けているのはアスペクト比を維持することだけです。背の高い写真が太って見えるようになっています。40 年間のプログラミングで、グラフィックスのコーディングに合計 2 時間費やしたことになるでしょう。:)
procedure TfrmTools.Shrink(aFn : String; Wid,Ht : Integer);
var
Bmp : TBitmap; // These three are created
Jpg : TJpegImage; // and Freed globally
Dst : TBitmap32; // to save some bit-thrashing
begin
try
Src.Bitmap.LoadFromFile(aFn); // Src = TImage32
Dst:=TBitmap32.Create;
Dst.SetSize(Wid,Ht);
Src.Bitmap.DrawTo(Dst,Dst.BoundsRect);
bmp:=TBitmap.Create;
jpg:=TJPEGImage.Create;
bmp.Assign(Dst);
jpg.Assign(bmp);
jpg.SaveToFile('D:\Test1280x720.jpg'); // Just testing
finally
Bmp.Free; // As above
Jpg.Free; // As above
Dst.Free; // As above
end;
end;
2016 年 3 月 23 日、私はここで善良な魂からのアドバイスを受けて、Graphis32 で弾丸をかみ砕きました。満足していましたが、壁にぶつかりました。データベースに約1200枚の画像へのパスがあり、表示、保存などはすべてうまくいっています.
一部の画像は 6 ~ 9 MB であり、PC 画面でのみ表示されるため、それほど大きく保存する必要はありません。それらを希望のサイズ、たとえば 1920 x 1080 に縮小し、H x W の比率を維持したいと考えています。すでに 1920 x 1080 より小さい画像を縮小したくありません。
私は多くの検索と試行錯誤を行ってきましたが、これまでのところエラーのみです。ユーザーが手動で作業しているときに、スケーリングや回転の後に保存部分があります。しかし、データベース全体をスキャンして、その場でサイズを変更できるようにしたいと考えています。
コードスニペットは素晴らしいでしょう。