我要做的是将图像转换为字节数组,然后将该字节数组写入文件。这是代码
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);
}
现在我已成功将图像转换为字节数组。我已经通过断点检查了字节数组中的值,并且它们都是有效的。
然而,当我尝试将数组写入文件然后打开文件时,我看到的只是垃圾。
我错过了什么吗?
答案 0 :(得分:2)
您的Bitmap
是Image
。当您只需致电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)
您期望看到什么?您将字节数组保存到文本文件。当您打开具有图像文件字节的文本文件时,您无法获得良好的结果。
确保您将文件保存为正确的类型,然后查看会发生什么。