我发现一个图像可以存储为一些字符串。举个例子我已经包含了一个带有图像的ms字部分。我用图像保存了一个word文件并将其保存为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 insert在一个blob的varchar insead中插入图像。等
答案 0 :(得分:9)
Convert.ToBase64String(b);
答案 1 :(得分:2)
您看到的编码称为base-64。您可以使用以下代码将任何文件转换为base-64,无论它是否为图像:
byte[] fileContents = File.ReadAllBytes(@"D:/bmp.bmp");
var base64 = Convert.ToBase64String(fileContents);
这将生成一个长的单行字符串。如果您希望将它分成几行,您可以另外指定Base64FormattingOptions.InsertLineBreaks
,就像在您看到的XML文件中一样。
答案 2 :(得分:1)
这可能是保存在base64字符串中的图像。
以下是转化说明:
http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx
答案 3 :(得分:0)
例如,必须使用BASE64编码将二进制数据编码为存储为字符数据。框架中有编码器可以使用你在那里的字节数组。
但请注意,此编码会略微增加数据的大小,并涉及额外的步骤。如果您可以直接将数据存储为字节,那就更有效了。但是你当然需要XML编码。