如何在System.Drawing.Icon
类型和byte[]
之间进行转换?我正在寻找一些可以(希望)在.NET2中运行的简单东西。
答案 0 :(得分:23)
你通过MemoryStream
,基本上是:
public static byte[] IconToBytes(Icon icon)
{
using (MemoryStream ms = new MemoryStream())
{
icon.Save(ms);
return ms.ToArray();
}
}
public static Icon BytesToIcon(byte[] bytes)
{
using (MemoryStream ms = new MemoryStream(bytes))
{
return new Icon(ms);
}
}
(历史记录:我不确定处理传递给构造函数的流是否安全。对于Bitmap
来说, 是不安全的,例如......它保留在流上并且可以稍后从中读取。显然它对Icon
是可以的。我希望MSDN更清楚......)
答案 1 :(得分:2)
Ex(有多种方式)
private byte[] GetBytes( Icon icon )
{
MemoryStream ms = new MemoryStream();
icon.Save( ms );
return ms.ToArray();
}
和
Bitmap bmpIcon = icon.ToBitmap();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
bmpIcon.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
答案 2 :(得分:1)
......又回来了
public static Icon IconFromBytes(byte[] bytes) {
using(var ms = new MemoryStream(bytes)) {
return new Icon(ms);
}
}
Icon类在构建后立即从流中读取。关闭MS没有坏处。