最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)Bitmap類型與Byte[]類型相互轉(zhuǎn)化的示例詳解

 更新時間:2024年07月10日 09:56:52   作者:白話Learning  
在C#編程中,Bitmap類型和Byte[]類型之間的相互轉(zhuǎn)化是圖像處理和數(shù)據(jù)傳輸中常見的需求,Bitmap類型表示一個位圖圖像,而Byte[]類型則是一個字節(jié)數(shù)組,本文將詳細介紹如何在這兩種類型之間進行相互轉(zhuǎn)化,需要的朋友可以參考下

前言

在C#編程中,Bitmap類型和Byte[]類型之間的相互轉(zhuǎn)化是圖像處理和數(shù)據(jù)傳輸中常見的需求。Bitmap類型表示一個位圖圖像,而Byte[]類型則是一個字節(jié)數(shù)組,可以用來存儲圖像數(shù)據(jù)。有時,我們需要將Bitmap類型轉(zhuǎn)換為Byte[]類型以便進行數(shù)據(jù)傳輸或存儲,而有時又需要將Byte[]類型轉(zhuǎn)換為Bitmap類型以在客戶端顯示圖像。本文將詳細介紹如何在這兩種類型之間進行相互轉(zhuǎn)化。

一、Bitmap類型轉(zhuǎn)Byte[]類型

使用Bitmap類的Save方法

Bitmap類的Save方法可以將圖像保存到文件,同時將文件內(nèi)容讀取到Byte[]數(shù)組中。以下是一個示例:

using System;
using System.IO;
using System.Drawing;

namespace BitmapToByteArray
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個Bitmap對象
            Bitmap bitmap = new Bitmap("example.jpg");

            // 將Bitmap對象保存到文件
            using (FileStream fileStream = new FileStream("example.jpg", FileMode.OpenOrCreate))
            {
                bitmap.Save(fileStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            }

            // 讀取文件內(nèi)容到Byte[]數(shù)組
            byte[] bytes = File.ReadAllBytes("example.jpg");

            // 輸出Byte[]數(shù)組長度
            Console.WriteLine("Byte[]數(shù)組長度:" + bytes.Length);

            // 釋放資源
            bitmap.Dispose();
        }
    }
}

使用Bitmap類的GetBytes方法

Bitmap類沒有直接的方法將自身轉(zhuǎn)換為Byte[],但我們可以使用Bitmap類的GetBytes方法來獲取圖像的像素數(shù)據(jù),然后將其轉(zhuǎn)換為Byte[]數(shù)組。以下是一個示例:

using System;
using System.Drawing;
using System.IO;

namespace BitmapToByteArray
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個Bitmap對象
            Bitmap bitmap = new Bitmap("example.jpg");

            // 獲取圖像的像素數(shù)據(jù)
            BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                ImageLockMode.ReadOnly, bitmap.PixelFormat);

            // 計算Byte[]數(shù)組的大小
            int bytesCount = bitmapData.Stride * bitmapData.Height;
            byte[] bytes = new byte[bytesCount];

            // 將像素數(shù)據(jù)復制到Byte[]數(shù)組
            System.Runtime.InteropServices.Marshal.Copy(bitmapData.Scan0, bytes, 0, bytesCount);

            // 釋放資源
            bitmap.UnlockBits(bitmapData);

            // 輸出Byte[]數(shù)組長度
            Console.WriteLine("Byte[]數(shù)組長度:" + bytes.Length);
        }
    }
}

二、Byte[]類型轉(zhuǎn)Bitmap類型

使用MemoryStream將Byte[]數(shù)組轉(zhuǎn)換為Bitmap對象

通過MemoryStream,我們可以將Byte[]數(shù)組重新構(gòu)造為Bitmap對象。以下是一個示例:

using System;
using System.Drawing;
using System.IO;

namespace ByteArrayToBitmap
{
    class Program
    {
        static void Main(string[] args)
        {
            // 讀取Byte[]數(shù)組
            byte[] bytes = File.ReadAllBytes("example.jpg");

            // 使用MemoryStream將Byte[]數(shù)組轉(zhuǎn)換為Bitmap對象
            using (MemoryStream memoryStream = new MemoryStream(bytes))
            {
                Bitmap bitmap = new Bitmap(memoryStream);

                // 輸出Bitmap對象的信息
                Console.WriteLine("圖像寬度:" + bitmap.Width);
                Console.WriteLine("圖像高度:" + bitmap.Height);

                // 釋放資源
                bitmap.Dispose();
            }
        }
    }
}

使用System.Drawing.Imaging.BitmapImage類

System.Drawing.Imaging.BitmapImage類提供了一種從Byte[]數(shù)組創(chuàng)建Bitmap對象的方法。以下是一個示例:

using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace ByteArrayToBitmap
{
    class Program
    {
        static void Main(string[] args)
        {
         {
            // 讀取Byte[]數(shù)組
            byte[] bytes = File.ReadAllBytes("example.jpg");

            // 使用System.Drawing.Imaging.BitmapImage類創(chuàng)建Bitmap對象
            Bitmap bitmap = new Bitmap(bytes);

            // 輸出Bitmap對象的信息
            Console.WriteLine("圖像寬度:" + bitmap.Width);
            Console.WriteLine("圖像高度:" + bitmap.Height);

            // 釋放資源
            bitmap.Dispose();
        }
    }
}

在這段代碼中,我們首先讀取了一個名為"example.jpg"的JPEG圖像文件的內(nèi)容,并將其存儲在Byte[]數(shù)組中。然后,我們使用Bitmap類構(gòu)造函數(shù),將Byte[]數(shù)組作為參數(shù)傳遞,創(chuàng)建了一個新的Bitmap對象。最后,我們輸出了新創(chuàng)建的Bitmap對象的寬度和高度信息,并釋放了資源。

注意: 在上面的示例中,我們使用了File.ReadAllBytes方法來讀取文件內(nèi)容。如果你需要處理其他格式的圖像文件,你可能需要使用不同的方法來讀取文件內(nèi)容,例如使用System.IO.FileStream類。

總結(jié)

在C#中,Bitmap類型和Byte[]類型之間的相互轉(zhuǎn)化可以通過使用Save方法、GetBytes方法、MemoryStream和BitmapImage類來實現(xiàn)。這些方法可以滿足圖像處理中的常見需求,例如將圖像保存到文件、從文件讀取圖像內(nèi)容,或者在網(wǎng)絡傳輸中將圖像數(shù)據(jù)轉(zhuǎn)換為Byte[]數(shù)組。

以上就是C#實現(xiàn)Bitmap類型與Byte[]類型相互轉(zhuǎn)化的示例詳解的詳細內(nèi)容,更多關于C# Bitmap與Byte[]相互轉(zhuǎn)化的資料請關注腳本之家其它相關文章!

相關文章

  • C# 改變無邊框窗體尺寸大小的方法

    C# 改變無邊框窗體尺寸大小的方法

    這篇文章介紹了C# 改變無邊框窗體尺寸大小的方法,有需要的朋友可以參考一下
    2013-10-10
  • C#中一個方法返回多個值的實現(xiàn)方法小結(jié)

    C#中一個方法返回多個值的實現(xiàn)方法小結(jié)

    通常一個方法只能返回一個值,但是如果在某些時候,我們想要返回多個值,例如某個方法將一個浮點數(shù)分割成一個整數(shù)和一個小數(shù)返回,因此本文給大家介紹了C#中一個方法返回多個值的實現(xiàn)方法及示例代碼,需要的朋友可以參考下
    2024-05-05
  • C#之線程同步Mutex類方式

    C#之線程同步Mutex類方式

    這篇文章主要介紹了C#之線程同步Mutex類方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • C#實現(xiàn)簡單串口通信的示例詳解

    C#實現(xiàn)簡單串口通信的示例詳解

    這篇文章主要為大家詳細介紹了C#實現(xiàn)串口通信的相關知識,文中示例代碼介紹的非常詳細,具有一定的學習價值,感興趣的小伙伴們可以跟隨小編一起了解一下
    2023-10-10
  • Unity UGUI的EventTrigger事件監(jiān)聽器組件介紹使用示例

    Unity UGUI的EventTrigger事件監(jiān)聽器組件介紹使用示例

    這篇文章主要為大家介紹了Unity UGUI的EventTrigger事件監(jiān)聽器組件介紹及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • C# 使用Dapper與金倉數(shù)據(jù)庫交互的實現(xiàn)步驟

    C# 使用Dapper與金倉數(shù)據(jù)庫交互的實現(xiàn)步驟

    本文主要介紹了C# 使用 Dapper 與金倉數(shù)據(jù)庫交互,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-12-12
  • C#使用Free Spire.Doc讀取Word內(nèi)容的詳細步驟

    C#使用Free Spire.Doc讀取Word內(nèi)容的詳細步驟

    在日常開發(fā)中,處理Word文檔的需求并不少見,從提取合同條款到解析報告數(shù)據(jù),手動操作效率低且易出錯,傳統(tǒng)方案依賴COM組件或付費庫,但讀取Word文本的輕量級需求卻常被忽視,本文將圍繞如何用免費的Free Spire.Doc for .NET實現(xiàn)Word內(nèi)容提取,需要的朋友可以參考下
    2025-09-09
  • 淺談C#中字符串是不可變的嗎

    淺談C#中字符串是不可變的嗎

    C#字符串不可變,創(chuàng)建后內(nèi)容不可修改,這樣設計保障了線程安全、哈希性能和安全性,同時簡化狀態(tài)管理,使用StringBuilder等方式可提升操作效率,理解不可變性有助于編寫高效、安全的代碼
    2025-10-10
  • 詳解C#中 Thread,Task,Async/Await,IAsyncResult的那些事兒

    詳解C#中 Thread,Task,Async/Await,IAsyncResult的那些事兒

    本文主要介紹了C#中 Thread,Task,Async/Await,IAsyncResult的相關知識。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • C#影院售票系統(tǒng)畢業(yè)設計(3)

    C#影院售票系統(tǒng)畢業(yè)設計(3)

    這篇文章介紹了C#影院售票系統(tǒng)畢業(yè)設計,文章主要內(nèi)容是關于購票、座位顏色狀態(tài)的改變及場次座位狀態(tài)的顯示,需要的朋友可以參考下
    2015-11-11

最新評論

阳西县| 永德县| 昌邑市| 东安县| 开原市| 黄骅市| 龙山县| 廊坊市| 南丹县| 孟村| 茶陵县| 清镇市| 高碑店市| 宜章县| 白山市| 夹江县| 泌阳县| 车致| 靖西县| 台北县| 沙田区| 互助| 鸡东县| 木里| 安仁县| 浦城县| 临海市| 三原县| 横山县| 临邑县| 太谷县| 武胜县| 遂昌县| 百色市| 秦皇岛市| 大名县| 建湖县| 广水市| 尼勒克县| 常山县| 屏南县|