将Image转换为ByteArray

时间:2013-05-23 19:18:37

标签: c# image exception bytearray gdi+

我知道已经有很多关于此的帖子,但到目前为止我尝试的每个解决方案都失败了。我想要的是从Byte[]对象中获取Image

到目前为止我尝试过:

  • using (MemoryStream ms = new MemoryStream()){/*...*/} (GDI +例外)
  • 处理image (ArgumentNullException(编码器))的副本
  • 关注solution from Microsoft (ArgumentNullException(编码器))
  • 使用ImageConverter (GDI +例外)

我期待的是:

public static Byte[] BytesFromImage(Image img) {
Byte[] imgFile;
MemoryStream ms = new MemoryStream();
img.Save(ms, img.RawFormat);
imgfile = ms.ToArray();
return imgFile;
}

每当我收到错误消息时,它都来自img.save(ms, img.RawFormat);

也许只是我,但是我在StackOverflow上所遵循的所有解决方案都给了我相同的结果:GDI +错误,有如此好的解释。

1 个答案:

答案 0 :(得分:0)

img.RawFormat替换为ImageFormat.Bmp

示例:

   class Program
    {

        public static byte[] BytesFromImage(Image img)
        {
            Byte[] imgFile;
            MemoryStream ms = new MemoryStream();
            img.Save(ms, ImageFormat.Bmp);
            imgFile = ms.ToArray();
            return imgFile;
        }

        private static void Main(string[] args)
        {
            using (Image image = new Bitmap(100, 100))
            {
                byte[] imgArr = BytesFromImage(image);

                Console.WriteLine("Image size is: {0}", imgArr.Length);
            }
        }