使用Image.Save将jpg转换为gif时出错



我要做的是将图像转换为字节数组,然后将该字节数组写入文件。下面是代码

public static byte[] Convert(Image img)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            // or whatever output format you like
            return ms.ToArray();
        }
    }
    public Form1()
    {
        InitializeComponent();
        Bitmap pic = new Bitmap("tulips.jpg");
        pictureBox1.Image = pic;
        byte[] img_array;
        img_array = Convert(pic);
        File.WriteAllBytes("test.txt", img_array);
    }

现在我已经成功地将图像转换为字节数组。我已经通过断点检查了字节数组中的值,它们都是有效的。

然而,当我尝试将数组写入文件然后打开文件时,我看到的都是垃圾。

我错过了什么吗?

您的BitmapImage。当您可以简单地调用Save(这里有文档)时,为什么要将其转换为byte数组

Bitmap pic = new Bitmap("tulips.jpg");
pictureBox1.Image = pic;
pic.Save("test.gif", System.Drawing.Imaging.ImageFormat.Gif); 
要操作图像,您通常会访问pixel data -您现在拥有的包含文件类型头以及像素!参见Bitmap.LockBits来操作像素(这里有文档)

您确定要使用图像查看器打开文件吗?.txt扩展通常会导致用文本编辑器打开它。由于图像文件的格式是二进制的,因此可以预期,当您将其呈现为文本时,只会看到"垃圾"。如果您在保存文件时使用正确的扩展名.gif,将会有所帮助。

File.WriteAllBytes("test.gif", img_array);

你以为会看到什么?您正在将字节数组保存到文本文件中。当你打开一个含有图像文件字节的文本文件时,你不可能得到一个好的结果。

确保您将文件保存为正确的类型,然后看看会发生什么

相关内容

  • 没有找到相关文章

最新更新