Получение изображения JPEG из шестнадцатеричной строки в XML - PullRequest
3 голосов
/ 04 апреля 2010

Ну вот, я пытаюсь собрать изображение, закодированное в виде шестнадцатеричной строки в файле XML. Я искал ответ на этот вопрос и не мог найти его где-либо. Вот что у меня сейчас.

byte[] bytes = Convert.FromBase64String(FilterResults("PHOTOGRAPH"));
MemoryStream mem = new MemoryStream(bytes);
Image bmp2 = Image.FromStream(mem);

return bmp2; 

Функция FilterResults просто возвращает строку из XML. Я могу получить строку символов и преобразовать ее в байт [], но как только я выполняю Image.FromStream (mem), я получаю ошибку «Параметр неверен».

Есть идеи?

1 Ответ

3 голосов
/ 04 апреля 2010

Фрагмент кода правильный (хотя MemoryStream реализует IDisposable и поэтому должен быть заключен в блок using).

Image.FromStream выдает ArgumentException, только если он не распознает формат изображения в потоке. Поэтому, если какой-то код не отображается, проблема должна быть связана с самим изображением.

Чтобы убедиться в правильности кода, используйте следующую тестовую программу для реального файла образа, находящегося где-то на вашем жестком диске:

string imageBase64;
using (Image image = Image.FromFile(@"C:\path_to_image.jpg"))
{
    using (MemoryStream ms = new MemoryStream())
    {
        image.Save(ms, ImageFormat.Jpeg);
        imageBase64 = Convert.ToBase64String(ms.ToArray());
    }
}
Console.WriteLine(imageBase64.Length);

byte[] imageData = Convert.FromBase64String(imageBase64);
using (MemoryStream ms = new MemoryStream(imageData))
{
    using (Image image = Image.FromStream(ms))
    {
        Console.WriteLine(image.Width);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...