I need to convert an Image to a bitmap.
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.
Here is the code:
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.EndI开发者_Python百科nit();
return bitmap;
Can some one explain why the background is going black and how i can stop it doing this.
Thanks
Don't save as a bitmap file. The file format doesn't support transparency, so the image will be saved without transparency.
You can use the PNG file format instead. That will preserve the transparency.
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.
There is a difference between System.Drawing.Bitmap
and Bitmap file format. You can save a System.Drawing.Bitmap
with transparency layer because it fully supports it.
var image = (System.Drawing.Image)value;
Bitmap bitmap = new Bitmap(image); //Make a Bitmap from the image
MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, ImageFormat.Png); //Format it as PNG so the transparency layer remains.
//Rest of the code...
A bmp
file format can also support transparency in particular ways. Read this.
精彩评论