现在做一个项目,完全使用XSD,如果采用Image 默认的byte[] 方式输出成XML ,就会很崩溃,会输出如下:
<Image>
<byte>-1</byte>
<byte>-12</byte>
<byte>158</byte>
<byte>-2</byte>
<byte>222</byte>
..........................
<byte>-1</byte>
</Image>
一张 290× 200 的图片,Jpeg 格式,大约需要输出14万行的byte 数组。图片还不到20K,但输出的字符串却大约有600K。这样的方案于情于理是完全说不通的。
解决办法:
采用目前比较流行的Base64 方式,将byte[] 数组转换为字符串,这样就减少了输出,同时也不受机器Code 的影响。
转换代码:
Image --> Base64String
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
public string ImageToBase64String(Image imageData, ImageFormat format)
{
string base64;
MemoryStream memory = new MemoryStream();
imageData.Save(memory, format);
base64 = System.Convert.ToBase64String(memory.ToArray());
memory.Close();
memory = null;
return base64;
}
Base64String --> Image
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
public Image Base64StringToImage(string Base64String)
{
byte[] imageBytes = Convert.FromBase64String(Base64String);
MemoryStream stream = new MemoryStream(imageBytes);
return Image.FromStream(stream);
}