我将png文件加载到TPNGImage中,然后将其显示在TImage中。没问题。然后我创建一个TBitmap并将其分配给TPNGImage,并将其显示在TImage中。没问题。
然后我创建第二个TPNGImage并将其分配给TBitmap。在这种情况下,如果我在TImage中显示它,它就失去了透明度。如果我设置了TBitmap。透明到True,在指定给PNGImage之前,PNGImage基本上是透明的,但有一个小区域的透明度丢失,显示为黑色。
var
Bmp: TBitmap;
PngImage: TPNGImage;
PngImage2: TPNGImage;
begin
PngImage := TPNGImage.Create;
try
PngImage.LoadFromFile(FILE_NAME);
Image1.Picture.Assign(PngImage);
Bmp := TBitmap.Create;
try
Bmp.Assign(PngImage);
Image2.Picture.Assign(Bmp);
PngImage2 := TPNGImage.Create;
try
//Bmp.Transparent := True;
PngImage2.Assign(Bmp);
Image3.Picture.Assign(PngImage2);
finally
PngImage2.Free;
end;
finally
Bmp.Free;
end;
finally
PngImage.Free;
end;
end;
结果不设置位图。透明到真实:
当我设置位图时的结果。透明到真实:图像中有一点黑色
如何在不丢失任何透明度的情况下将图像分配给位图?
我可以证实@SertacAkyuz在评论中说的话。以下方面没有问题:
Bmp.Assign(PngImage);
结果是一个32位的图像,保留了alpha通道。问题在于
PngImage2.Assign(Bmp);
阿尔法迷失的地方。
我发现这个库有助于转换:
https://github.com/graphics32/GR32PNG
我只能推测。。。但是png支持部分透明,而24位位图不支持。由于剩余的“黑色”像素不是黑色的(它们是$000101),我怀疑这些像素在原始png中是半透明的。或者在转换为位图时应用了一些反序列化效果。但我认为半透明的可能性更大。
我从未真正使用过32位位图,但也许它们可以用来保持透明度。(他们确实有阿尔法通道…)。但我怀疑这可能比位图更棘手。分配
我的任务是: 创建一个TBitmap对象 如何在Delphi XE中做到这一点?
问题内容: 我有一个Android应用程序,可将图像加载为位图并将其显示在ImageView中。问题在于图像似乎具有透明背景;这会导致图像上的某些黑色文本在黑色背景下消失。 如果将ImageView背景设置为白色,则可以完成这种工作,但是在图像上会出现丑陋的大边框,将其拉伸以适合父对象(实际图像在中间缩放)。 所以-我想将位图中的透明像素转换为纯色-但我不知道该怎么做! 任何帮助将不胜感激!
问题内容: 嘿,当我从png创建缩略图时,尝试保持png的透明度时遇到麻烦,有人对此有任何经验吗?任何帮助都会很棒,这是我目前正在做的事情: 问题答案: 过去,我已经成功地做到了: 我发现输出图像使用质量更好的比
我正试图重新设计我的网站,使我原来的方形、基于瓷砖的图像渲染更像是图像的剪贴画。。。为了摆脱网格模式。 这是它最初的样子。。。 这是我想要的一个粗略的模型: 所以我重新保存了一个透明背景的图像缩略图。。。我只想让狗展示,正方形是透明的,可以在下面显示网站的背景。 然而,当我在页面上呈现它时,它的背景是黑色的。 我已经检查了我的CSS,看看是否有某种img类,或用于渲染漫画的类。。。甚至可以通过引导
我试图拖动对象表示为PNG图像透明背景从AnchorPane到HBox。 我使用以下线条将图像设置为拖动视图: 对于不透明的背景图像,这一切都很好,但对于透明的图像,图像的背景是白色的,不透明度为“0.8”。 我尝试为节点拍摄快照: 但它不起作用,白色背景仍然存在。有没有其他方法可以让它像原始图像一样透明?
我创建了一个对话框,用户可以在其中浏览图像,然后看到画布上绘制的图像的预览。图像被缩放,以便在框中安装时保持其宽高比。我使用了在这个答案中找到的调整大小的方法,包括将图像从SWT转换为AWT,执行调整大小,从AWT转换回SWT,最后在画布上绘制。由于这个过程在时间和处理能力方面非常昂贵,如果图像大小完全正确,我选择跳过调整大小的步骤,因此不需要以任何方式进行转换。 在处理alpha透明的图像时会出