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

时间:2013-01-15 15:39:31

标签: c# .net image-processing graphics byte

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

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);

    }

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

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

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

您的BitmapImage。当您只需致电byte(记录here

时,为什么要将其转换为Save数组?
Bitmap pic = new Bitmap("tulips.jpg");
pictureBox1.Image = pic;
pic.Save("test.gif", System.Drawing.Imaging.ImageFormat.Gif); 

要操作图像,您通常会访问pixel data - 您现在拥有的文件类型标题以及像素!请参阅Bitmap.LockBits来操纵像素(记录为here

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您期望看到什么?您将字节数组保存到文本文件。当您打开具有图像文件字节的文本文件时,您无法获得良好的结果。

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