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