C#byte数组与Image的相互转换实例代码
C#byte数组与Image的相互转换实例代码
功能需求:
1、把一张图片(pngbmpjpegbmpgif)转换为byte数组存放到数据库。
2、把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示。
3、从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上。
这里的Image是System.Drawing.Image。
//Getanimagefromfile
Imageimage=Image.FromFile("D:\\test.jpg");
Bitmapbitmap=newBitmap("D:\\test.jpg");
以下三个函数分别实现了上述三个需求:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.IO;
usingSystem.Linq;
usingSystem.Text;
namespaceNetUtilityLib
{
publicstaticclassImageHelper
{
///
///ConvertImagetoByte[]
///
///
///
publicstaticbyte[]ImageToBytes(Imageimage)
{
ImageFormatformat=image.RawFormat;
using(MemoryStreamms=newMemoryStream())
{
if(format.Equals(ImageFormat.Jpeg))
{
image.Save(ms,ImageFormat.Jpeg);
}
elseif(format.Equals(ImageFormat.Png))
{
image.Save(ms,ImageFormat.Png);
}
elseif(format.Equals(ImageFormat.Bmp))
{
image.Save(ms,ImageFormat.Bmp);
}
elseif(format.Equals(ImageFormat.Gif))
{
image.Save(ms,ImageFormat.Gif);
}
elseif(format.Equals(ImageFormat.Icon))
{
image.Save(ms,ImageFormat.Icon);
}
byte[]buffer=newbyte[ms.Length];
//Image.Save()会改变MemoryStream的Position,需要重新Seek到Begin
ms.Seek(0,SeekOrigin.Begin);
ms.Read(buffer,0,buffer.Length);
returnbuffer;
}
}
///
///ConvertByte[]toImage
///
///
///
publicstaticImageBytesToImage(byte[]buffer)
{
MemoryStreamms=newMemoryStream(buffer);
Imageimage=System.Drawing.Image.FromStream(ms);
returnimage;
}
///
///ConvertByte[]toapictureandStoreitinfile
///
///
///
///
publicstaticstringCreateImageFromBytes(stringfileName,byte[]buffer)
{
stringfile=fileName;
Imageimage=BytesToImage(buffer);
ImageFormatformat=image.RawFormat;
if(format.Equals(ImageFormat.Jpeg))
{
file+=".jpeg";
}
elseif(format.Equals(ImageFormat.Png))
{
file+=".png";
}
elseif(format.Equals(ImageFormat.Bmp))
{
file+=".bmp";
}
elseif(format.Equals(ImageFormat.Gif))
{
file+=".gif";
}
elseif(format.Equals(ImageFormat.Icon))
{
file+=".icon";
}
System.IO.FileInfoinfo=newSystem.IO.FileInfo(file);
System.IO.Directory.CreateDirectory(info.Directory.FullName);
File.WriteAllBytes(file,buffer);
returnfile;
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!