C# byte数组与Image相互转换的方法_C#教程-查字典教程网
C# byte数组与Image相互转换的方法
C# byte数组与Image相互转换的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:功能需求:1、把一张图片(pngbmpjpegbmpgif)转换为byte数组存放到数据库。2、把从数据库读取的byte数组转换为Image...

功能需求:

1、把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库。

2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。

3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。

这里的Image是System.Drawing.Image。

以下三个函数分别实现了上述三个需求:

复制代码 代码如下:

// Convert Image to Byte[]

private byte[] ImageToByte(Image image)

{

ImageFormat format = image.RawFormat;

using (MemoryStream ms = new MemoryStream())

{

if (format.Equals(ImageFormat.Jpeg))

{

image.Save(ms, ImageFormat.Jpeg);

}

else if (format.Equals(ImageFormat.Png))

{

image.Save(ms, ImageFormat.Png);

}

else if (format.Equals(ImageFormat.Bmp))

{

image.Save(ms, ImageFormat.Bmp);

}

else if (format.Equals(ImageFormat.Gif))

{

image.Save(ms, ImageFormat.Gif);

}

else if (format.Equals(ImageFormat.Icon))

{

image.Save(ms, ImageFormat.Icon);

}

byte[] buffer = new byte[ms.Length];

//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin

ms.Seek(0, SeekOrigin.Begin);

ms.Read(buffer, 0, buffer.Length);

return buffer;

}

}

// Convert Byte[] to Image

private Image ByteToImage(byte[] buffer)

{

MemoryStream ms = new MemoryStream(buffer);

Image image = System.Drawing.Image.FromStream(ms);

return image;

}

// Convert Byte[] to a picture

private string CreateImageFromByte(string fileName, byte[] buffer)

{

string file = fileName; //文件名(不包含扩展名)

Image image = ByteToImage(buffer);

ImageFormat format = image.RawFormat;

if (format.Equals(ImageFormat.Jpeg))

{

file += ".jpeg";

}

else if (format.Equals(ImageFormat.Png))

{

file += ".png";

}

else if (format.Equals(ImageFormat.Bmp))

{

file += ".bmp";

}

else if (format.Equals(ImageFormat.Gif))

{

file += ".gif";

}

else if (format.Equals(ImageFormat.Icon))

{

file += ".icon";

}

//文件路径目录必须存在,否则先用Directory创建目录

File.WriteAllBytes(file, buffer);

return file;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类