作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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;
任何有关如何解决此问题的想法都会非常有帮助。
我们尝试过:
查看了 FMX.Graphics 中的 CreateThumbnail
代码,但我们发现没有任何可以更改的内容来修复此问题。
最佳答案
这确实是一个大错误。我拿了示例代码并亲自尝试了一下。
结果:
1) Image2 不能很好地缩放并且始终与 Image3 大小相同
2) 3次尝试后,Image2由两个重叠图像组成:前面是第三次尝试的图像,后面是第一次尝试的图像。
该过程是可重复的,并且图像的选择也不相关
关于delphi - XE7 FMX 损坏的 PNG 缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628952/
我是一名优秀的程序员,十分优秀!