首先,這個問題不是關於「如何將位圖保存爲磁盤上的jpeg?」將位圖編碼爲Jpeg
我找不到(或想到)用Jpeg壓縮轉換Bitmap
的方法,但將它保留爲Bitmap
對象。 MSDN clearly shows如何將位圖保存爲JPEG,但我在尋找的是如何將編碼/壓縮應用於Bitmap
對象,所以我仍然可以在我的代碼中傳遞它,而無需引用該文件。
一個背後的原因將是一個輔助類來處理位圖,但不應該知道使用的持久性的方法。
首先,這個問題不是關於「如何將位圖保存爲磁盤上的jpeg?」將位圖編碼爲Jpeg
我找不到(或想到)用Jpeg壓縮轉換Bitmap
的方法,但將它保留爲Bitmap
對象。 MSDN clearly shows如何將位圖保存爲JPEG,但我在尋找的是如何將編碼/壓縮應用於Bitmap
對象,所以我仍然可以在我的代碼中傳遞它,而無需引用該文件。
一個背後的原因將是一個輔助類來處理位圖,但不應該知道使用的持久性的方法。
所有圖像在載入程序存儲器時都是位圖。在寫入磁盤時通常使用特定的壓縮,在從磁盤讀取時使用解壓縮。
如果你擔心的圖像,你可以壓縮,壓縮字節,通過字節數組圍繞內部的內存佔用。壓縮對於圖像的無損壓縮是很好的。不要忘記,許多圖像壓縮具有different levels of losiness(sp?)換句話說,壓縮丟棄數據以儘可能以最小的字節數存儲圖像。
德/壓縮也是在你的交易的內存佔用的處理時間的性能折衷。無論如何,除非你真的很喜歡,否則如果你需要以任何方式操縱它,圖像確實需要是一個位圖。
這裏是an answer for a somewhat similar question,你可能會感興趣。
我擔心的是真的關於圖像處理和持久性之間關注的分離。我可以將jpeg保存在文件系統(直接或隔離存儲),數據庫或雲中。我的圖像處理不知道,而且我的持久層不適合做一些圖像處理,不是嗎? – Tipx
沒錯。圖像處理是一個單獨的問題。雖然如果您使用任何類型的有損壓縮類型,您將通過拋出數據來自動進行處理,即壓縮算法認爲它不需要保留圖像。 –
Bitmap
不支持的編碼內存存儲。它始終未編碼(請參見PixelFormat
枚舉)。可能你需要編寫自己的包裝類/抽象,或放棄這個想法。
var stream = new MemoryStream()
Bitmap.Save(Stream, ImageFormat)
這是您需要的嗎?
不要忘了jpeg壓縮是有損的。如果壓縮爲jpeg然後解壓縮爲位圖,則會有不同(較少)的圖像信息:http://en.wikipedia.org/wiki/Lossy_compression –
相關[在.NET壓縮圖像](http://stackoverflow.com/q/1377438/11343) – CharlesB