【发布时间】:2012-09-18 15:08:48
【问题描述】:
当我将Bitmap 写入文件并从文件中读取时,我得到了正确的透明度。
using (Bitmap bmp = new Bitmap(2, 2))
{
Color col = Color.FromArgb(1, 2, 3, 4);
bmp.SetPixel(0, 0, col);
bmp.Save("J.bmp");
}
using (Bitmap bmp = new Bitmap("J.bmp"))
{
Color col = bmp.GetPixel(0, 0);
// Value of col.A = 1. This is right.
}
但如果我将Bitmap 写入MemoryStream 并从中读取MemoryStream,则透明度已被删除。所有 alpha 值都变为255。
MemoryStream ms = new MemoryStream();
using (Bitmap bmp = new Bitmap(2, 2))
{
Color col = Color.FromArgb(1, 2, 3, 4);
bmp.SetPixel(0, 0, col);
bmp.Save(ms, ImageFormat.Bmp);
}
using (Bitmap bmp = new Bitmap(ms))
{
Color col = bmp.GetPixel(0, 0);
// Value of col.A = 255. Why? I am expecting 1 here.
}
我希望将Bitmap 保存到MemoryStream 并以透明的方式读回。我该如何解决这个问题?
【问题讨论】:
-
在
new Bitmap(ms)调用之前没有ms.position=0。不确定在这种情况下是否有问题,所以发表评论。
标签: c# bitmap memorystream