亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

一、Bitmap類型轉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類沒有直接的方法將自身轉換為Byte[],但我們可以使用Bitmap類的GetBytes方法來獲取圖像的像素數(shù)據(jù),然后將其轉換為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[]類型轉Bitmap類型

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

通過MemoryStream,我們可以將Byte[]數(shù)組重新構造為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ù)組轉換為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類構造函數(shù),將Byte[]數(shù)組作為參數(shù)傳遞,創(chuàng)建了一個新的Bitmap對象。最后,我們輸出了新創(chuàng)建的Bitmap對象的寬度和高度信息,并釋放了資源。

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

總結

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

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

相關文章

  • C# 9 新特性——record的相關總結

    C# 9 新特性——record的相關總結

    這篇文章主要介紹了C# 9 新特性——record的相關總結,幫助大家更好的理解和學習使用c# 9的新特性,感興趣的朋友可以了解下
    2021-02-02
  • 基于C#方法重載的總結詳解

    基于C#方法重載的總結詳解

    本篇文章是對C#中方法重載進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Unity中使用反射機制調(diào)用函數(shù)

    Unity中使用反射機制調(diào)用函數(shù)

    這篇文章主要為大家詳細介紹了Unity中使用反射機制調(diào)用函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • C#語法新特性之元組實例詳解

    C#語法新特性之元組實例詳解

    元組(Tuple)在4.0 的時候就有了,但元組也有些缺點,具體那些缺點,本文給大家介紹的非常詳細,本文重點給大家C#語法新特征之元組,感興趣的朋友一起學習吧
    2017-04-04
  • C#實現(xiàn)批量更改文件名稱大小寫或擴展名

    C#實現(xiàn)批量更改文件名稱大小寫或擴展名

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)批量更改文件名稱大小寫或擴展名的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#怎么實現(xiàn)手機短信發(fā)送功能

    C#怎么實現(xiàn)手機短信發(fā)送功能

    為了個人信息的安全,很多網(wǎng)站都有短信發(fā)送的功能,究竟是怎么實現(xiàn)的呢?對于個人站長來說的話,通過使用sms短信通知api接口相對比較簡單,下面小編給大家介紹具體實現(xiàn)過程,對c#怎么實現(xiàn)手機短信發(fā)送功能感興趣的朋友一起學習吧
    2015-12-12
  • asp.net實現(xiàn)遍歷Request的信息操作示例

    asp.net實現(xiàn)遍歷Request的信息操作示例

    這篇文章主要介紹了asp.net實現(xiàn)遍歷Request的信息操作,涉及asp.net針對請求信息相關操作打印操作技巧,需要的朋友可以參考下
    2020-03-03
  • C#中實現(xiàn)向數(shù)組中動態(tài)添加元素

    C#中實現(xiàn)向數(shù)組中動態(tài)添加元素

    這篇文章主要介紹了C#中實現(xiàn)向數(shù)組中動態(tài)添加元素方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • WPF仿Tabcontrol實現(xiàn)切換多個不同View

    WPF仿Tabcontrol實現(xiàn)切換多個不同View

    這篇文章主要為大家詳細介紹了WPF如何模仿Tabcontrol實現(xiàn)切換多個不同View,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • C#函數(shù)式編程中的緩存技術詳解

    C#函數(shù)式編程中的緩存技術詳解

    這篇文章主要介紹了C#函數(shù)式編程中的緩存技術詳解,本文我們將分成兩部分來講解,第一部分為預計算,第二部分則為緩存,需要的朋友可以參考下
    2015-01-01

最新評論