當我將Bitmap
寫入文件並從該文件讀取時,我正確地獲取了透明度。從MemoryStream中加載時在位圖中沒有透明度
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
和讀取它的透明度。我該如何解決這個問題?
在新的Bitmap(ms)調用之前沒有'ms.position = 0'。不知道在這種情況下是否有問題,請發表評論。 –