Как преобразовать изображение в поток символов - PullRequest
3 голосов
/ 17 сентября 2010

Я обнаружил, что изображение может быть сохранено в виде некоторой строки. Чтобы привести пример, я включил часть слова MS с изображением. Я сохранил файл слова с изображением и сохранил его в формате xml. Когда я открылXML-файл в блокноте я получил следующий раздел. Это должно быть изображение, хранящееся в виде некоторого потока текста.Есть ли аналогичный способ сделать это в .net.

<pkg:part pkg:name="/word/media/image1.png" pkg:contentType="image/png" pkg:compression="store">
    <pkg:binaryData>
      iVBORw0KGgoAAAANSUhEUgAAAMgAAAA2CAMAAAC1HibFAAADAFBMVEWlweL95Mn90qXs8vn7woTi
      6/b7unT94sO8oIP93br4okTJjExJgsS9mXT5rVr7xYr4mzaStdz+/v/5qlT3kiT7vnuCqdb7zZv8
      1aqXqb5GgMP4nTt6mLpMhMX//Pn/+vT/s1n/4rU+fMH+8eXT4fH1+PyTqsb++PGXl5n3lSpQh8b9
      6tVLg8T3iRP6sWO80el5o9OpxOP+7t3+9uz+2rLC1ez+7Nmbut6yyub+9On5pUqQt+P3jh2SmqNE
      ...Truncated for easy reading...
      ex9vtLWG320M9N9gHow3tv8BO9hrVo7LVzgAAAAASUVORK5CYII=
    </pkg:binaryData>
</pkg:part>

Я пробовал следующий способ

 Bitmap bmp = new Bitmap(@"D:/bmp.bmp");
    MemoryStream mem = new MemoryStream();
    byte[] b = mem.ToArray();

Но он дает мне массив байтов вместо символов. Если это были символыЯ мог бы использовать его во многих отношениях, таких как сохранение в формате xml, использование вставки sql для вставки изображения во внутреннюю часть большого двоичного объекта.и т.д.

Ответы [ 4 ]

9 голосов
/ 17 сентября 2010
2 голосов
/ 17 сентября 2010

Кодировка, которую вы видите, называется base-64.Вы можете использовать следующий код для преобразования любого файла в base-64, независимо от того, является ли он изображением или нет:

byte[] fileContents = File.ReadAllBytes(@"D:/bmp.bmp");
var base64 = Convert.ToBase64String(fileContents);

Это создаст длинную однострочную строку.Вы можете дополнительно указать Base64FormattingOptions.InsertLineBreaks, если хотите, чтобы он был разбит на несколько строк, как в XML-файле, который вы видели.

1 голос
/ 17 сентября 2010

Это, вероятно, изображение, сохраненное в base64 String.

Вот описание конверсии:

http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx

0 голосов
/ 17 сентября 2010

Двоичные данные должны быть закодированы для сохранения в виде символьных данных, например, с использованием кодировки BASE64.В платформе есть кодировщики, которые делают это с имеющимся у вас байтовым массивом.

Однако обратите внимание, что эта кодировка немного увеличивает размер данных и включает дополнительный шаг.Если вы можете хранить данные как байты напрямую, это более эффективно.но, конечно, вам понадобится кодировка для XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...