繁体   English   中英

如何将Image转换为字符串最有效的方法?

[英]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

有三点你不必要地进行大型操作:

  1. 获取流的字节
  2. 将其转换为Base64
  3. 将它写入XmlWriter。

代替。 首先调用LengthGetBuffer 这让你直接对流的缓冲区进行操作。 (尽管先冲洗它)。

然后,自己实现base-64。 这是相对简单的,因为你采取3个字节的组,做一些bit-twiddling索引到它将被转换为的字符,然后输出该字符。 在最后,根据最后一个块发送的字节数添加一些=符号( =一个剩余字节, ==两个剩余字节,如果没有部分块,则为无)。

将此写入char缓冲区(char [])。 最有效的尺寸是实验的问题,但我从2048个字符开始。 填充缓冲区后,在其上调用XmlWriter.WriteRaw ,然后再次开始在索引0处回写。

通过这种方式,您可以减少分配,并且从将图像加载到内存流中的那一刻起就开始输出。 通常,这应该导致更好的吞吐量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM