-3

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

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

    }

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

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

我错过了什么吗?

4

3 回答 3

2

Bitmap的是一个Image. 当您可以简单地调用时,为什么要将其转换为byte数组Save在此处记录)

Bitmap pic = new Bitmap("tulips.jpg");
pictureBox1.Image = pic;
pic.Save("test.gif", System.Drawing.Imaging.ImageFormat.Gif); 

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

于 2013-01-15T15:49:48.073 回答
1

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

File.WriteAllBytes("test.gif", img_array);
于 2013-01-15T15:43:22.350 回答
1

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

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

于 2013-01-15T15:43:35.863 回答