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; } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!