欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# byte數(shù)組與Image相互轉(zhuǎn)換的方法

 更新時間:2013年10月22日 14:51:43   作者:  
這篇文章介紹了C# byte數(shù)組與Image相互轉(zhuǎn)換的方法,有需要的朋友可以參考一下

功能需求:

1、把一張圖片(png bmp jpeg bmp gif)轉(zhuǎn)換為byte數(shù)組存放到數(shù)據(jù)庫。

2、把從數(shù)據(jù)庫讀取的byte數(shù)組轉(zhuǎn)換為Image對象,賦值給相應(yīng)的控件顯示。

3、從圖片byte數(shù)組得到對應(yīng)圖片的格式,生成一張圖片保存到磁盤上。

這里的Image是System.Drawing.Image。

以下三個函數(shù)分別實現(xiàn)了上述三個需求:

復(fù)制代碼 代碼如下:

// Convert Image to Byte[]
        private byte[] ImageToByte(Image image)
        {
            ImageFormat format = image.RawFormat;
            using (MemoryStream ms = new MemoryStream())
            {
                if (format.Equals(ImageFormat.Jpeg))
                {
                    image.Save(ms, ImageFormat.Jpeg);
                }
                else if (format.Equals(ImageFormat.Png))
                {
                    image.Save(ms, ImageFormat.Png);
                }
                else if (format.Equals(ImageFormat.Bmp))
                {
                    image.Save(ms, ImageFormat.Bmp);
                }
                else if (format.Equals(ImageFormat.Gif))
                {
                    image.Save(ms, ImageFormat.Gif);
                }
                else if (format.Equals(ImageFormat.Icon))
                {
                    image.Save(ms, ImageFormat.Icon);
                }
                byte[] buffer = new byte[ms.Length];
                //Image.Save()會改變MemoryStream的Position,需要重新Seek到Begin
                ms.Seek(0, SeekOrigin.Begin);
                ms.Read(buffer, 0, buffer.Length);
                return buffer;
            }
        }

        // Convert Byte[] to Image
        private Image ByteToImage(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream(buffer);
            Image image = System.Drawing.Image.FromStream(ms);
            return image;
        }

        // Convert Byte[] to a picture
        private string CreateImageFromByte(string fileName, byte[] buffer)
        {
            string file = fileName; //文件名(不包含擴(kuò)展名)
            Image image = ByteToImage(buffer);
            ImageFormat format = image.RawFormat;
            if (format.Equals(ImageFormat.Jpeg))
            {
                file += ".jpeg";
            }
            else if (format.Equals(ImageFormat.Png))
            {
                file += ".png";
            }
            else if (format.Equals(ImageFormat.Bmp))
            {
                file += ".bmp";
            }
            else if (format.Equals(ImageFormat.Gif))
            {
                file += ".gif";
            }
            else if (format.Equals(ImageFormat.Icon))
            {
                file += ".icon";
            }
            //文件路徑目錄必須存在,否則先用Directory創(chuàng)建目錄
            File.WriteAllBytes(file, buffer);
            return file;
        }

相關(guān)文章

  • 基于WPF實現(xiàn)帶蒙版的MessageBox消息提示框

    基于WPF實現(xiàn)帶蒙版的MessageBox消息提示框

    這篇文章主要介紹了如何利用WPF實現(xiàn)帶蒙版的MessageBox消息提示框,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-08-08
  • c# winform讀取xml文件創(chuàng)建菜單的代碼

    c# winform讀取xml文件創(chuàng)建菜單的代碼

    動態(tài)創(chuàng)建菜單使得程序靈活性大大增加,本文根據(jù)讀取xml文件中的配置菜單項來動態(tài)創(chuàng)建菜單,代碼如下
    2013-09-09
  • c#設(shè)計模式 適配器模式詳細(xì)介紹

    c#設(shè)計模式 適配器模式詳細(xì)介紹

    結(jié)構(gòu)模式(Structural Pattern)描述如何將類或者對象結(jié)合在一起形成更大的結(jié)構(gòu)。結(jié)構(gòu)模式描述兩種不同的東西:類與類的實例。根據(jù)這一點,結(jié)構(gòu)模式可以分為類的結(jié)構(gòu)模式和對象的結(jié)構(gòu)模式
    2012-10-10
  • 淺談C# 構(gòu)造方法(函數(shù))

    淺談C# 構(gòu)造方法(函數(shù))

    這篇文章主要介紹了C# 構(gòu)造方法(函數(shù))的的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的學(xué)習(xí)C#,感興趣的朋友可以了解下
    2020-06-06
  • C#計算代碼執(zhí)行時間的方法

    C#計算代碼執(zhí)行時間的方法

    在一些測試工作時我們需要獲得高精度的代碼執(zhí)行時間以比較其效率。
    2013-03-03
  • C#實現(xiàn)獲取一年中是第幾個星期的方法

    C#實現(xiàn)獲取一年中是第幾個星期的方法

    這篇文章主要介紹了C#實現(xiàn)獲取一年中是第幾個星期的方法,比較實用的功能,需要的朋友可以參考下
    2014-08-08
  • C#中的匿名方法實例解析

    C#中的匿名方法實例解析

    這篇文章主要介紹了C#中的匿名方法,包括其由來、定義及用法等,需要的朋友可以參考下
    2014-09-09
  • C#和.NET生成和使用異步流的方法實現(xiàn)

    C#和.NET生成和使用異步流的方法實現(xiàn)

    異步流可以簡化異步文件的讀取、寫入和處理,本文主要介紹了C#和.NET生成和使用異步流的方法實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C#使用Consul集群進(jìn)行服務(wù)注冊與發(fā)現(xiàn)

    C#使用Consul集群進(jìn)行服務(wù)注冊與發(fā)現(xiàn)

    這篇文章主要介紹了C#使用Consul集群進(jìn)行服務(wù)注冊與發(fā)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#后端接收form-data,創(chuàng)建實體類教程

    C#后端接收form-data,創(chuàng)建實體類教程

    這篇文章主要介紹了C#后端接收form-data,創(chuàng)建實體類教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論