博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Image与Bitmap的区别及相互转换
阅读量:4311 次
发布时间:2019-06-06

本文共 2812 字,大约阅读时间需要 9 分钟。

 

 

1. Image.FromFile()返回的是某个继承自Image的具体类的对象,在这里,就是Bitmap或者Metafile其中之一。这应该算是factory pattern的一种形式。所以,Image类确实不能直接创建对象的,但这里Image.FromFile()返回的是Bitmap或者Metafile的对象。

2. Bitmap不仅仅对应于bmp,其实只要是像素式的图片格式(矢量格式不行),理论上都可以用Bitmap,就像YJPC789(雪地里的一颗星) 所说的。Image所抽象的是Bitmap和Metafile两个子类,你可以看一下msdn里的介绍。

 

/// /// 将图片Image转换成Byte[]/// /// image对象/// 后缀名/// 
public static byte[] ImageToBytes(Image Image, System.Drawing.Imaging.ImageFormat imageFormat){ if (Image == null) { return null; } byte[] data = http://www.cnblogs.com/peasana/archive/2012/02/13/null; using (MemoryStream ms= new MemoryStream()) { using (Bitmap Bitmap = new Bitmap(Image)) { Bitmap.Save(ms, imageFormat); ms.Position = 0; data = http://www.cnblogs.com/peasana/archive/2012/02/13/new byte[ms.Length]; ms.Read(data, 0, Convert.ToInt32(ms.Length)); ms.Flush(); } } return data;} /// /// byte[]转换成Image/// /// 二进制图片流///
Image
public static System.Drawing.Image byteArrayToImage(byte[] byteArrayIn){ if (byteArrayIn == null) return null; using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArrayIn)) { System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); ms.Flush(); return returnImage; }}//Image转换Bitmap1. Bitmap img = new Bitmap(imgSelect.Image);2. Bitmap bmp = (Bitmap)pictureBox1.Image;//Bitmap转换成Imageusing System.IO;private static System.Windows.Controls.Image Bitmap2Image(System.Drawing.Bitmap Bi){ MemoryStream ms = new MemoryStream(); Bi.Save(ms, System.Drawing.Imaging.ImageFormat.Png); BitmapImage bImage = new BitmapImage(); bImage.BeginInit(); bImage.StreamSource = new MemoryStream(ms.ToArray()); bImage.EndInit(); ms.Dispose(); Bi.Dispose(); System.Windows.Controls.Image i = new System.Windows.Controls.Image(); i.Source = bImage; return i ;}//byte[] 转换 Bitmappublic static Bitmap BytesToBitmap(byte[] Bytes) { MemoryStream stream = null; try { stream = new MemoryStream(Bytes); return new Bitmap((Image)new Bitmap(stream)); } catch (ArgumentNullException ex) { throw ex; } catch (ArgumentException ex) { throw ex; } finally { stream.Close(); } } //Bitmap转byte[] public static byte[] BitmapToBytes(Bitmap Bitmap) { MemoryStream ms = null; try { ms = new MemoryStream(); Bitmap.Save(ms, Bitmap.RawFormat); byte[] byteImage = new Byte[ms.Length]; byteImage = ms.ToArray(); return byteImage; } catch (ArgumentNullException ex) { throw ex; } finally { ms.Close(); } }

 

 

参考文章

 

 ,

 

转载于:https://www.cnblogs.com/arxive/p/6277377.html

你可能感兴趣的文章
pyenv管理多python版本
查看>>
mysql 存储过程和触发器综合例题
查看>>
深度的发现之256个class打平1个id
查看>>
0909我对编译原理的见解
查看>>
lib 和 dll
查看>>
hdu 2042 - 不容易系列之二
查看>>
Linux下设置postgresql数据库开机启动
查看>>
mysql函数技巧整理
查看>>
二叉树
查看>>
IO多路复用--epoll详解
查看>>
[线段树优化应用] 数星星Star
查看>>
表单序列化以及后台表单数据参数的提取
查看>>
SQL语句(十五)视图
查看>>
nginx 设置开机启动
查看>>
继承和组合
查看>>
小程序-----上传图片
查看>>
工作流表单自定义的误区
查看>>
带有循环功能的存储过程
查看>>
数据结构-链表插入节点
查看>>
软件项目开发流程
查看>>