Как преобразовать объект, который получает изображение в байтах, в реальное изображение? - PullRequest
4 голосов
/ 27 февраля 2010

Я занимаюсь разработкой приложения для смарт-устройств на C #. В этом я звоню веб-сервисам. Метод веб-службы возвращает карту Google. Тип возврата метода - объект. Объект содержит изображение в байтовом формате. Объект содержит изображение в формате base64binary. Мне нужно отобразить фактическое изображение в моем приложении. Какой тип кастинга мне нужно сделать, чтобы отобразить изображение. Можете ли вы предоставить мне код или любую ссылку, с помощью которой я могу решить вышеуказанную проблему?

Ответы [ 2 ]

5 голосов
/ 27 февраля 2010

Если у вас есть строка, в которой байты изображения действительно находятся в base64 кодировке , то вы хотите вызвать статический метод FromBase64String класса Convert , чтобы получить массив байтов :

byte[] bytes = Convert.FromBase64String("base 64 string");

Оттуда вы хотите создать новый экземпляр класса MemoryStream с байтами:

MemoryStream ms = new MemoryStream(bytes);

Наконец, последний вызов, который вы бы сделали, - это статический метод FromStream класса Image , чтобы получить Image , с которым вы можете работать:

Image image = Image.FromStream(ms);

Обратите внимание, что в разделе «Примечания» для документации по методу FromStream класса Image вы должны держать экземпляр Stream (из которого происходит MemoryStream) открытым, пока вы используете Image.

Также обратите внимание, что хотя реализация MemoryStream не использует неуправляемые ресурсы и не обязательно требует вызов Dispose , это кодирование против реализации детали, в отличие от деталей контракта , которые определяются классом Stream, который указывает, что вы должны вызывать Dispose, когда закончите с ним.

Причина, по которой вы хотите это сделать, заключается в том, что Stream для изображения является другим подклассом. Например, если используется экземпляр FileStream , вы должны вызвать метод Dispose, когда закончите с ним (вместе с методом Dispose для класса Image, также).

2 голосов
/ 27 февраля 2010

Вы должны иметь возможность поместить байт [] в MemoryStream, чтобы создать изображение, как показано ниже

byte[] yourImage;
MemoryStream ms = new MemoryStream(image);
Image.FromStream(ms);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...