问题描述
我需要将图像转换为位图.
I need to convert an Image to a bitmap.
最初以字节形式读取 gif,然后将其转换为图像.
initially a gif was read in as bytes and then converted to an Image.
但是当我尝试将图像转换为位图时,显示在我的图片框中的图形在以前是白色时变成了黑色背景.
But when I try convert the image to a bit map, the graphic displaying in my picturebox has a black background when it used to be white.
代码如下:
var image = (System.Drawing.Image)value;
// Winforms Image we want to get the WPF Image from...
var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
MemoryStream memoryStream = new MemoryStream();
// Save to a memory stream...
image.Save(memoryStream, ImageFormat.Bmp);
// Rewind the stream...
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bitmap.StreamSource = memoryStream;
bitmap.EndInit();
return bitmap;
有人可以解释为什么背景变黑以及我如何阻止它这样做.
Can some one explain why the background is going black and how i can stop it doing this.
谢谢
推荐答案
不要保存为位图文件.文件格式不支持透明,保存时图片不透明.
Don't save as a bitmap file. The file format doesn't support transparency, so the image will be saved without transparency.
您可以改用 PNG 文件格式.这将保持透明度.
You can use the PNG file format instead. That will preserve the transparency.
如果你真的需要它使用位图文件格式,你必须先让它不透明.新建一个相同大小的位图,使用Graphics.FromImage
方法获取一个图形对象绘制在图片上,使用Clear
方法填充背景颜色,使用 DrawImage
方法在背景上绘制图像,然后保存该位图.
If you really need it to use the bitmap file format, you have to make it non-transparent first. Create a new bitmap with the same size, use the Graphics.FromImage
method to get a graphics object to draw on the image, use the Clear
method to fill it with the background color that you want, use the DrawImage
method to draw your image on top of the background, and then save that bitmap.
这篇关于将图像转换为位图会使背景变黑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!