第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將位圖轉(zhuǎn)換為字節(jié)數(shù)組

將位圖轉(zhuǎn)換為字節(jié)數(shù)組

眼眸繁星 2019-07-15 15:33:27
將位圖轉(zhuǎn)換為字節(jié)數(shù)組使用C#,是否有更好的方法來轉(zhuǎn)換WindowsBitmap轉(zhuǎn)到byte[]保存到臨時文件并使用FileStream?
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

內(nèi)存流對此很有幫助。您可以將其放入擴展方法中:

public static class ImageExtensions{
    public static byte[] ToByteArray(this Image image, ImageFormat format)
    {
        using(MemoryStream ms = new MemoryStream())
        {
            image.Save(ms, format);
            return ms.ToArray();
        }
    }}

你可以用它就像:

var image = new Bitmap(10, 10);// Draw your imagebyte[] arr = image.ToByteArray(ImageFormat.Bmp);

在圖像轉(zhuǎn)換器方面,我部分地不同意prestuanifto的回答。不要使用圖像轉(zhuǎn)換器。從技術(shù)上講,它沒有什么問題,但它使用裝箱/從對象取消裝箱這一事實告訴我,它是來自.NET框架舊的黑暗地方的代碼,與圖像處理一起使用并不理想(至少在轉(zhuǎn)換為字節(jié)[]時是過度的),特別是當(dāng)您考慮以下情況時。

我看了看ImageConverterNET框架使用的代碼,在內(nèi)部它使用的代碼幾乎與我前面提供的代碼相同。它創(chuàng)造了一個新的MemoryStream,保存Bitmap在您提供它時,它的格式是什么,并返回數(shù)組。跳過創(chuàng)建ImageConverter類使用MemoryStream


查看完整回答
反對 回復(fù) 2019-07-15
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

你也可以只是馬歇爾.復(fù)制位圖數(shù)據(jù)。沒有中間內(nèi)存流等和一個快速的內(nèi)存副本。這應(yīng)該同時適用于24位和32位圖。

public static byte[] BitmapToByteArray(Bitmap bitmap){

    BitmapData bmpdata = null;

    try
    {
        bmpdata = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, bitmap.PixelFormat);
        int numbytes = bmpdata.Stride * bitmap.Height;
        byte[] bytedata = new byte[numbytes];
        IntPtr ptr = bmpdata.Scan0;

        Marshal.Copy(ptr, bytedata, 0, numbytes);

        return bytedata;
    }
    finally
    {
        if (bmpdata != null)
            bitmap.UnlockBits(bmpdata);
    }}


查看完整回答
反對 回復(fù) 2019-07-15
  • 3 回答
  • 0 關(guān)注
  • 931 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號