【发布时间】:2011-08-19 08:25:23
【问题描述】:
我想将图像文件转换为字符串。以下作品:
MemoryStream ms = new MemoryStream();
Image1.Save(ms, ImageFormat.Jpeg);
byte[] picture = ms.ToArray();
string formmattedPic = Convert.ToBase64String(picture);
但是,将其保存到 XmlWriter 时,需要很长时间才能保存(26k 图像文件需要 20 秒)。有没有办法加快这个动作?
谢谢,
拉克斯
【问题讨论】:
-
好吧,ToArray() 复制了内存流的缓冲区。您可以改用 GetBuffer() 方法来节省分配时间。
-
@Inuyasha:不——你不能因为 GetBuffer(参见 MSDN)返回的字节数(未初始化)可能比当前流中的字节数多!
-
@yahia:这就是为什么您检查流的 Length 属性,并且不要读取缓冲区中的那个点。如果他调用 ToArray(),它会创建一个副本。
标签: c# image byte streamreader memorystream