我收到了一个包含十六进制数据的文本文件,我知道它形成了一个jpeg图像。以下是格式示例:
FF D8 FF E0 00 10 4A 46 49 46 00 01 02 00 00 64 00 64 00 00 FF E1 00 B8 45 78 69 00 00 4D
这只是一个片段,但你明白了。
有谁知道如何将其转换回原来的jpeg?
答案 0 :(得分:0)
要将十六进制字符串转换为字节,请使用带有基本16参数的Convert.ToByte
。
要将字节数组转换为Bitmap
,请将其放入Stream并使用Bitmap(Stream)
构造函数:
using System.IO;
//..
string hexstring = File.ReadAllText(yourInputFile);
byte[] bytes = new byte[hexstring.Length / 2];
for (int i = 0; i < hexstring.Length; i += 2)
bytes[i / 2] = Convert.ToByte( hexstring.Substring(i, 2), 16);
using (MemoryStream ms = new MemoryStream(bytes))
{
Bitmap bmp = new Bitmap(ms);
// now you can do this:
bmp.Save(yourOutputfile, System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose(); // dispose of the Bitmap when you are done with it!
// or that:
pictureBox1.Image = bmp; // Don't dispose as long as the PictureBox needs it!
}
我想有更多的LINQish方式,但只要它有效..