博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C#] Image 與 byte[] 互轉
阅读量:6240 次
发布时间:2019-06-22

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

Introduction

有的時候我們必須將 Image 物件轉為 byte[] 陣列,也可能將 byte[] 轉換為 Image 物件,

例如 : 圖檔通常都是以二進位的方式存在於資料庫,當資料撈出來時,也許會需要先轉換成 Image 的格式,再做圖片匯製或是其他處理。

 

Example

修改 20100113

sample1 將 Byte 陣列轉換為 Image。

///         /// 將 Byte 陣列轉換為 Image。        ///         /// Byte 陣列。                public static Image BufferToImage(byte[] Buffer) {            if (Buffer == null || Buffer.Length == 0) { return null; }            byte[] data = null;            Image oImage = null;            Bitmap oBitmap = null;            //建立副本            data = (byte[])Buffer.Clone();            try {                MemoryStream oMemoryStream = new MemoryStream(Buffer);                //設定資料流位置                oMemoryStream.Position = 0;                oImage = System.Drawing.Image.FromStream(oMemoryStream);                //建立副本                oBitmap = new Bitmap(oImage);             }            catch {                throw;            }            //return oImage;            return oBitmap;        } sample2 將 Image 轉換為 Byte 陣列。
///         /// 將 Image 轉換為 Byte 陣列。        ///         /// Image 。        /// 指定影像格式。                public static byte[] ImageToBuffer(Image Image, System.Drawing.Imaging.ImageFormat imageFormat) {            if (Image == null) { return null; }            byte[] data = null;            using (MemoryStream oMemoryStream = new MemoryStream()) {                //建立副本                using (Bitmap oBitmap = new Bitmap(Image)) {                    //儲存圖片到 MemoryStream 物件,並且指定儲存影像之格式                    oBitmap.Save(oMemoryStream, imageFormat);                    //設定資料流位置                    oMemoryStream.Position = 0;                    //設定 buffer 長度                    data = new byte[oMemoryStream.Length];                    //將資料寫入 buffer                    oMemoryStream.Read(data, 0, Convert.ToInt32(oMemoryStream.Length));                    //將所有緩衝區的資料寫入資料流                    oMemoryStream.Flush();                }            }            return data;        }

转载于:https://www.cnblogs.com/vmyspace/archive/2012/03/19/2405664.html

你可能感兴趣的文章
对前面的自定义的toast制作拖拽效果,以及双击居中效果
查看>>
php 文件目录操作
查看>>
一个人的心态决定你的人生百分度
查看>>
lsyncd配置文件
查看>>
Java基础学习总结(7)——Object类
查看>>
OPEN SSH升级小结(针对SUSE REDHAT linux系统)
查看>>
Myeclipse优化配置
查看>>
RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
查看>>
Notepad++ 快捷键大全
查看>>
Oracle统计求和
查看>>
在Android搭建简单的服务器
查看>>
智能合约编程/Dapp漏洞 --Unexpected Ether
查看>>
perl写的tcp连接数
查看>>
Windows 7自带截图工具技巧两则
查看>>
如何规划构建一套大型的Citrix桌面虚拟化架构 - 后记
查看>>
zencart lazyload插件
查看>>
delete和delete[] 的深度思考
查看>>
linux ifconfig命令
查看>>
截杀“WannaCrypt”,终结“永恒之蓝”!
查看>>
Oracle内部视图:x$ktfbue
查看>>