【发布时间】:2016-03-23 22:52:15
【问题描述】:
2016 年 3 月 24 日 我今年 76 岁,当我写这篇文章时,我认为这是有道理的,但和其他人一样,我不确定我在问什么。这是我在网上搜索时拼凑起来的(它并不漂亮)。它几乎有效,唯一缺少的是保持纵横比。它使高大的照片看起来很胖。在 40 年的编程生涯中,我可能总共有两个小时的时间来编写图形代码。 :)
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 到 9MB 之间,不需要存储那么大,因为它们只能在 PC 屏幕上查看。我想将它们减小到所需的大小,例如 1920 x 1080 并保留 H x W 比率。如果图像已经小于 1920 x 1080,我不想缩小图像。
我做了很多搜索和反复试验,到目前为止只有错误。当用户手动工作时,我在缩放和/或旋转后有保存部分。但我希望能够扫描整个数据库并即时更改大小。
一个代码 sn-p 会很棒。
【问题讨论】:
标签: delphi delphi-5 graphics32