我想将图像文件转换为字符串。以下作品:
MemoryStream ms = new MemoryStream();
Image1.Save(ms, ImageFormat.Jpeg);
byte[] picture = ms.ToArray();
string formmattedPic = Convert.ToBase64String(picture);
但是,将其保存到 XmlWriter 时,需要很长时间才能保存(26k 图像文件需要 20 秒)。有没有办法加快这个动作?
Thanks,
Raks
有以下三点是你不必要地进行大型操作的:
- 获取流的字节数
- 将其转换为 Base64
- 将其写入 XmlWriter。
反而。第一次通话Length
and GetBuffer
。这使您可以直接对流的缓冲区进行操作。 (不过,请先冲洗)。
然后,自己实现base-64。它相对简单,因为您采用 3 个字节的组,进行一些位调整以获取要转换为的字符的索引,然后输出该字符。最后你添加一些=
符号根据最后一个块发送的字节数(=
对于一个剩余字节,==
对于两个剩余字节,如果没有部分块则没有)。
将其写入字符缓冲区(char[])。最有效的大小需要实验,但我会从 2048 个字符开始。当你填满缓冲区后,调用XmlWriter.WriteRaw
上,然后再次从索引 0 处开始写回。
这样,您就可以减少分配,并且从将图像加载到内存流中时就开始输出。一般来说,这应该会带来更好的吞吐量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)