2012-01-20 72 views
33

我目前正在研究一種需要將未添加字節的數組高效轉換爲PNG或JPEG格式的應用程序。圖像格式並不重要,只要速度很快。將字節數組轉換爲PNG/JPG

我試過.NET庫,性能非常差。任何人都可以推薦一個好的免費軟件庫嗎?

編輯:字節[]是一個8位灰度位圖

+0

不清楚你的意思 - 這個字節數組是以什麼開頭的?你能提供更多細節嗎? –

+0

你的問題並不完全清楚。 'byte []'代表什麼?它是實際圖像的內容嗎?它是一個未壓縮的位圖,你想保存爲JPG/PNG? – vcsjones

回答

55

你應該能夠做這樣的事情:

byte[] bitmap = GetYourImage(); 

using(Image image = Image.FromStream(new MemoryStream(bitmap))) 
{ 
    image.Save("output.jpg", ImageFormat.Jpeg); // Or Png 
} 

here獲取更多信息。

希望這會有所幫助。

+1

+1 ...幾乎是通常的做法。不過,根據用戶的需求,不需要將其保存到文件系統。 –

+0

完美。我喜歡它!這正是我正在尋找的。 –

+2

嗨,我試圖類似的東西將原始圖像轉換爲jpeg butgetting *參數無效*異常。有任何想法嗎? 'byte [] bytes = System.IO.File.ReadAllBytes(@「C:\ Input.CR2」); (Image「= Image.FromStream(new MemoryStream(bytes))) image.Save(@」C:\ output.jpg「,ImageFormat.Jpeg); }' –

0
+0

我知道這是使用編程庫,但在那種情況下,該工具的命令行是什麼? – user2284570

+0

@ user2284570如果您在命令行上使用它,那麼您將使用文件而不是字節數組。假設你的輸入是PNG(一個PNG簽名後跟着塊),那麼'convert input.png output.jpg'可能會起作用。 – ahoffer

1

有兩個問題,這個問題:

假設你有一個灰度位圖,你有兩個因素需要考慮:

  1. 爲JPG格式...什麼質量的損失是可以容忍的?
  2. 對於PNG ...什麼樣的壓縮級別是可以容忍的? (儘管對於我所見過的大多數事情,你沒有太多的選擇,所以這個選擇可能可以忽略不計。)對於任何人都認爲這個問題沒有意義:是的,你可以改變壓縮/嘗試壓縮的傳球次數;查看Ifranview或其中的一些插件。

回答這些問題,然後您可能能夠找到您的原始答案。