2014-10-29 2 views
-1

Мне предоставлен текстовый файл, содержащий шестнадцатеричные данные, которые, как я знаю, образуют образ jpeg. Ниже приведен пример формата:Как преобразовать шестнадцатеричный текстовый файл в 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

Для преобразования из шестнадцатеричной строки в байт вы используете Convert.ToByte с базовым параметром 16.

Чтобы преобразовать массив байтов в Bitmap вы поместите его в поток и использовать 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 путь, но до тех пор, как он работает ..

Смежные вопросы