Csharp/C#教程: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 { ///<summary> ///ConvertImagetoByte[] ///</summary> ///<paramname="image"></param> ///<returns></returns> 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; } } ///<summary> ///ConvertByte[]toImage ///</summary> ///<paramname="buffer"></param> ///<returns></returns> publicstaticImageBytesToImage(byte[]buffer) { MemoryStreamms=newMemoryStream(buffer); Imageimage=System.Drawing.Image.FromStream(ms); returnimage; } ///<summary> ///ConvertByte[]toapictureandStoreitinfile ///</summary> ///<paramname="fileName"></param> ///<paramname="buffer"></param> ///<returns></returns> 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; } } }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:C#中图片.BYTE[]和base64string的转换方法详谈C#图片与byte[]之间以及byte[]与string之间的转换C#中两个byte如何相加C#中Byte[]和String之间转换的方法C#字符串string和内存流MemoryStream及比特数组byte[]之间相互转换C#中Byte转换相关的函数C#byte数组传入C操作方法

标签: 数组 byte te byte数组

C# 中的EventHandler实例详解

C#中的DateTime是值类型还是引用类型

上述就是C#学习教程:C#byte数组与Image的相互转换实例代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907804.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐