簡體   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