2

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

到目前为止我已经尝试过:

  • using (MemoryStream ms = new MemoryStream()){/*...*/} (GDI+ 例外)
  • 处理(ArgumentNullException (Encoder))的副本image
  • 遵循Microsoft 的解决方案 (ArgumentNullException (Encoder))
  • 使用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+ 错误,解释得很好。

4

1 回答 1

0

替换img.RawFormatImageFormat.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);
            }
        }
于 2013-05-23T21:29:23.143 回答