gpt4 book ai didi

delphi - XE7 FMX 损坏的 PNG 缩略图

转载 作者:行者123 更新时间:2023-12-03 15:56:20 26 4
gpt4 key购买 nike

在 XE7-Update1 FMX Windows7-64 位中创建缩略图时遇到问题。 XE5中不存在此问题。

我在 FMX HD 表单上有三个 TImage 组件、一个按钮和一个 TOpenDialog 组件。

通过 TOpenDialog,我选择了一个已在 Photoshop/Corel 中测试且看起来不错的现有 PNG。图像在 Image1 中正确显示。

在运行时,我使用Image1.Bitmap.CreateThumbnail创建两个缩略图,并将结果分配给Image2和Image3。在 XE7 上,图像 2 和图像 3 的背景已损坏,其中包含表单的随机部分。有了 XE5,一切都运行良好。

当我重复该过程时,损坏会增加(在 Image1 中加载 PNG...创建缩略图并显示)。

保存到文件时出现损坏的背景。

代码如下:

procedure TForm1.Button1Click(Sender: TObject);
begin
FormShow(nil);
end;

procedure TForm1.FormShow(Sender: TObject);
var
thumbX, thumbY : Integer;
SaveParams: TBitmapCodecSaveParams;
thumb1, thumb2 : TBitmap;
begin
if OpenDialog1.Execute then
begin
Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
try
thumbX := Round(Image1.Width / 4);
thumbY := Round(Image1.Height / 4);
thumb1 := Image1.Bitmap.CreateThumbnail(thumbX, thumbY);
Image2.Bitmap.SetSize(thumbX, thumbY); //this has no impact
Image2.Bitmap.Assign(thumb1);
finally
thumb1.free;
end;

try
thumbX := Round(Image1.Width / 2);
thumbY := Round(Image1.Height /2);
thumb2 := Image1.Bitmap.CreateThumbnail(thumbX, thumbY);
Image3.Bitmap.SetSize(thumbX, thumbY); //this has no impact
Image3.Bitmap.Assign(thumb2);
finally
thumb2.Free;
end;

SaveParams.Quality := 100;
Image2.Bitmap.SaveToFile('c:\blackdot\image_quarter.png', @SaveParams);
Image3.Bitmap.SaveToFile('c:\blackdot\image_half.png', @SaveParams);
end;
end;

任何有关如何解决此问题的想法都会非常有帮助。

我们尝试过:

  1. 无效
  2. 在指定缩略图之前设置 image2、image3 的大小
  3. 在分配缩略图之前清除 image2、image3

查看了 FMX.Graphics 中的 CreateThumbnail 代码,但我们发现没有任何可以更改的内容来修复此问题。

最佳答案

这确实是一个大错误。我拿了示例代码并亲自尝试了一下。
结果:
1) Image2 不能很好地缩放并且始终与 Image3 大小相同
2) 3次尝试后,Image2由两个重叠图像组成:前面是第三次尝试的图像,后面是第一次尝试的图像。

该过程是可重复的,并且图像的选择也不相关

关于delphi - XE7 FMX 损坏的 PNG 缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com