我想在我的wpf解决方案中显示一个webp格式的图像,我使用了下面的代码。
Image image = new Image(); Binding imageBinding = new() { Source = bytes }; image.SetBinding(Image.SourceProperty, imageBinding);
通过API调用获取图像,这就是为什么我使用字节而不是路径。问题是,当我运行我的应用程序时,图像有一个黑色的背景。我该如何解决这个问题?
lo8azlld1#
WPF和WEBP不能很好地配合使用。最好摆脱WEBP,切换到PNG。像使黑色像素透明这样的解决方案很困难,因为a)错误的像素并不总是黑色的,b)图像也可以有"真正的"黑色像素。这些像素也会是透明的。不过。1.在某些情况下,WPF和WEBP似乎也可以工作。在WPF中显示图像的示例代码对我帮助最大。在那里,DecodePixelWidth属性用于BitmapImage。WEBP似乎对某些值有效 的解码像素宽度。素数似乎特别适合这里。我用997。它对我来说工作得很好。1.要使黑色像素透明,您可以使用Bitmap类的MakeTransparent(Color)方法。为了使其工作,您必须首先将BitmapImage转换为位图,然后再转换回来。如何做到这一点,在Converting BitmapImage to Bitmap and vice versa中描述。answer对我帮助最大。
1条答案
按热度按时间lo8azlld1#
WPF和WEBP不能很好地配合使用。最好摆脱WEBP,切换到PNG。像使黑色像素透明这样的解决方案很困难,因为a)错误的像素并不总是黑色的,b)图像也可以有"真正的"黑色像素。这些像素也会是透明的。
不过。
1.在某些情况下,WPF和WEBP似乎也可以工作。在WPF中显示图像的示例代码对我帮助最大。在那里,DecodePixelWidth属性用于BitmapImage。WEBP似乎对某些值有效 的解码像素宽度。素数似乎特别适合这里。我用997。它对我来说工作得很好。
1.要使黑色像素透明,您可以使用Bitmap类的MakeTransparent(Color)方法。为了使其工作,您必须首先将BitmapImage转换为位图,然后再转换回来。如何做到这一点,在Converting BitmapImage to Bitmap and vice versa中描述。answer对我帮助最大。