将图像转换为字节数组

时间:2011-02-19 13:11:05

标签: c# .net

有人可以告诉我如何将图像(.jpg,.gif,.bmp)转换为字节数组吗?

6 个答案:

答案 0 :(得分:12)

将图像转换为字节的最简单方法是使用System.Drawing命名空间下的ImageConverter类

public static byte[] ImageToByte(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

答案 1 :(得分:6)

如果您的图片已经是System.Drawing.Image的形式,那么您可以这样做:

public byte[] convertImageToByteArray(System.Drawing.Image image)
{
     using (MemoryStream ms = new MemoryStream())
     {
         image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 
             // or whatever output format you like
         return ms.ToArray(); 
     }
}

您可以将此功能与图片框控件中的图像一起使用,如下所示:

byte[] imageBytes = convertImageToByteArray(pictureBox1.Image);

答案 2 :(得分:6)

我假设你想要的是像素值。假设bitmapSystem.Windows.Media.Imaging.BitmapSource

int stride = bitmap.PixelWidth * ((bitmap.Format.BitsPerPixel + 7) / 8);
byte[] bmpPixels = new byte[bitmap.PixelHeight * stride];
bitmap.CopyPixels(bmpPixels, stride, 0);

请注意,'stride'是每行像素ddata所需的字节数。还有一些解释here

答案 3 :(得分:0)

从任何文件中获取字节尝试:

byte[] bytes =  File.ReadAllBytes(pathToFile);

答案 4 :(得分:0)

基于MusiGenesis;帮了我很多,但我有很多图像类型。这将保存它可以读取的任何图像类型。

            System.Drawing.Imaging.ImageFormat ImageFormat = imageToConvert.RawFormat;
        byte[] Ret;
        try
        {
            using (MemoryStream ms = new MemoryStream())
            {
                imageToConvert.Save(ms, ImageFormat);
                Ret = ms.ToArray();
            }
        }
        catch (Exception) { throw; }
        return Ret;

答案 5 :(得分:-1)

您可以使用File.ReadAllBytes方法获取字节

如果您使用的是FileUpload类,则可以使用FileBytes属性将字节数作为字节数组。