Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从MemoryStream加载时位图中没有透明度_C#_Bitmap_Memorystream - Fatal编程技术网

C# 从MemoryStream加载时位图中没有透明度

C# 从MemoryStream加载时位图中没有透明度,c#,bitmap,memorystream,C#,Bitmap,Memorystream,当我将位图写入文件并从文件中读取时,我获得的透明度是正确的 使用(位图bmp=新位图(2,2)) { Color col=Color.FromArgb(1,2,3,4); bmp.SetPixel(0,0,col); bmp.Save(“J.bmp”); } 使用(位图bmp=新位图(“J.bmp”)) { Color col=bmp.GetPixel(0,0); //列A的值=1。这是正确的。 } 但是如果我将位图写入内存流并从该内存流读取,则透明度已被移除。所有alpha值变为255 Me

当我将
位图
写入文件并从文件中读取时,我获得的透明度是正确的

使用(位图bmp=新位图(2,2))
{
Color col=Color.FromArgb(1,2,3,4);
bmp.SetPixel(0,0,col);
bmp.Save(“J.bmp”);
}
使用(位图bmp=新位图(“J.bmp”))
{
Color col=bmp.GetPixel(0,0);
//列A的值=1。这是正确的。
}
但是如果我将
位图
写入
内存流
并从该
内存流
读取,则透明度已被移除。所有alpha值变为
255

MemoryStream ms=newmemoryStream();
使用(位图bmp=新位图(2,2))
{
Color col=Color.FromArgb(1,2,3,4);
bmp.SetPixel(0,0,col);
保存(ms,ImageFormat.bmp);
}
使用(位图bmp=新位图(毫秒))
{
Color col=bmp.GetPixel(0,0);
//列A的值=255。为什么?我在这里预期为1。
}

我希望将
位图
保存到
内存流
中,并以透明方式将其读回。如何解决此问题?

问题是这一行:
bmp.Save(ms,ImageFormat.bmp)
。ImageFormat.Bmp不支持alpha值,您可以将其更改为ImageFormat.Png以获得相同的效果。

问题在于这行:
Bmp.Save(ms,ImageFormat.Bmp)
。ImageFormat.Bmp不支持alpha值,您可以将其更改为ImageFormat.Png以获得相同的效果。

AFAIK Bmp格式不支持透明度。检查是否在以下位置将格式更改为PNG:

bmp.Save(ms, ImageFormat.Png);

但是,您可以索引.bmp,它将在第256点添加透明颜色。问题是,bmp的许多图像要求是24位和32位,而透明索引图像只能转换为16位。

AFAIK bmp格式不支持透明。检查是否在以下位置将格式更改为PNG:

bmp.Save(ms, ImageFormat.Png);

但是,您可以索引.bmp,它将在第256点添加透明颜色。问题是,bmp的许多图像要求是24位和32位,透明索引图像只能转换为16位。

在调用
新位图(ms)
之前,没有
ms.position=0
。不确定在这种情况下是否有问题,请进行注释。在调用新位图(ms)之前,没有
ms.position=0
。不确定在这种情况下是否有问题,因此请评论.1至
.Png
建议。从流中读取位图确实会在流中查找,这有点令人惊讶,但似乎
ms.position=0
new bitmap(ms)
之前,当我期望有一个新位图时。+1到
.Png
建议。从流中读取位图确实会在流中查找,这有点令人惊讶,但似乎
ms.position=0
new bitmap(ms)
之前,当我期望一个位图时。