c# - bitmap轉byte - vb net bitmap to byte array




最快的方式將圖像轉換為字節數組 (4)

那麼有沒有其他方法可以實現這個目標?

不需要。為了將圖像轉換為字節數組,您必須指定圖像格式 - 就像在將文本轉換為字節數組時一樣,您必須指定編碼。

如果您擔心壓縮文物,請選擇無損格式。 如果您擔心CPU資源,請選擇一種不會打擾壓縮的格式 - 例如,只是原始的ARGB像素。 但是,這當然會導致更大的字節數組。

請注意,如果選擇包含壓縮的格式, 之後壓縮字節數組沒有意義 - 幾乎可以肯定沒有任何有益效果。

我正在製作遠程桌面共享應用程序,在該應用程序中,我捕獲桌面的圖像並將其壓縮並發送到接收器。 為了壓縮圖像,我需要將它轉換為byte []。

目前我正在使用這個:

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
    return  ms.ToArray();
}

public Image byteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}

但我不喜歡它,因為我必須將其保存在ImageFormat中,並且可能會耗盡資源(減慢速度)以及產生不同的壓縮結果。我已閱讀使用Marshal.Copy和memcpy,但我無法了解他們。

那麼有沒有其他方法可以實現這個目標?


Image參數有一個RawFormat屬性,它返回圖像的文件格式。 您可以嘗試以下方法:

// extension method
public static byte[] imageToByteArray(this System.Drawing.Image image)
{
    using(var ms = new MemoryStream())
    {
        image.Save(ms, image.RawFormat);
        return ms.ToArray();
    }
}

我能找出的最快方法是:

var myArray = (byte[]) new ImageConverter().ConvertTo(InputImg, typeof(byte[]));

希望有用


public static byte[] ReadImageFile(string imageLocation)
    {
        byte[] imageData = null;
        FileInfo fileInfo = new FileInfo(imageLocation);
        long imageFileLength = fileInfo.Length;
        FileStream fs = new FileStream(imageLocation, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);
        imageData = br.ReadBytes((int)imageFileLength);
        return imageData;
    }




bytearray