[英]how to convert Image to string the most efficient way?
我想将图像文件转换为字符串。 以下作品:
MemoryStream ms = new MemoryStream();
Image1.Save(ms, ImageFormat.Jpeg);
byte[] picture = ms.ToArray();
string formmattedPic = Convert.ToBase64String(picture);
但是,将其保存到XmlWriter时,它需要很长时间才能保存(26k图像文件为20秒)。 有没有办法加速这个动作?
谢谢,
RAKS
有三点你不必要地进行大型操作:
代替。 首先调用Length
和GetBuffer
。 这让你直接对流的缓冲区进行操作。 (尽管先冲洗它)。
然后,自己实现base-64。 这是相对简单的,因为你采取3个字节的组,做一些bit-twiddling索引到它将被转换为的字符,然后输出该字符。 在最后,根据最后一个块发送的字节数添加一些=
符号( =
一个剩余字节, ==
两个剩余字节,如果没有部分块,则为无)。
将此写入char缓冲区(char [])。 最有效的尺寸是实验的问题,但我从2048个字符开始。 填充缓冲区后,在其上调用XmlWriter.WriteRaw
,然后再次开始在索引0处回写。
通过这种方式,您可以减少分配,并且从将图像加载到内存流中的那一刻起就开始输出。 通常,这应该导致更好的吞吐量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.