2011-05-13 57 views
0

我想從InputStreams中讀取圖像,並將它們繪製到我的畫布上。不幸的是,這些圖像可能非常大,並且很容易導致內存不足異常。 BitmapFactory允許我提供一個樣本大小值,它將在處理圖像時對樣本進行縮減採樣,並避免內存問題。但是,圖像質量受損。Android:是否可以在不重新採樣的情況下繪製大圖像?

理想情況下,canvas會提供一個可以從InputStream繪製而不是從Bitmap繪製的繪畫圖像方法,但是我沒有找到任何這種類型的東西。這是否存在,或者是否有任何其他方法可以安全地從InputStream中隨意渲染任意大的圖像而不下采樣?

+0

我非常害怕您必須創建一個位圖,除非您採用「drawPixel」方法並實現您自己的InputStream繪圖方法。 – harism 2011-05-13 16:00:59

+0

我爲png圖像做了這個,在這裏我一次解碼一行像素的圖像,並且隨時進行繪製。不幸的是,我需要將BitmapFactory用於jpeg圖像,因爲我不知道如何解碼Jpegs,這是我的問題所在。 – ab11 2011-05-13 16:06:14

回答

0

的答案似乎是:沒有,沒有。

0

我不確定你使用的是什麼圖像格式,但是如果你想發送一個無損圖像(或損失比已經發生的少),它不能被壓縮得比JPEG更好。所以,請先使用JPEG。

下面是在畫布上繪製圖像的示例。重寫'draw'方法。 http://www.androidsnippets.com/drawing-an-image-as-a-map-overlay2

在結束時,黑客它

也許,預裂的圖像;壓縮每一個人,並在最後恢復聽起來合乎邏輯。

這裏有一些嘗試,

http://kalanir.blogspot.com/2010/02/how-to-split-image-into-chunks-java.html

而且

http://www.anddev.org/multimedia-problems-f28/chunk-of-a-big-big-image-t6211.html

+0

感謝您的回覆。但是,這不適合我的情況。 – ab11 2011-05-13 16:07:28

相關問題