如果我們處理大圖像(位圖),我們最終會在圖像允許的大小(爲了顯示)上打牆。我想知道是否有人知道這個限制在哪裏?這裏有很多因素,手機的最大堆大小等。Android圖片文件大小限制以及如何處理大圖片?
如果要顯示它們並使它們可以交互,還有處理大圖像的任何解決方法嗎?
如果我們處理大圖像(位圖),我們最終會在圖像允許的大小(爲了顯示)上打牆。我想知道是否有人知道這個限制在哪裏?這裏有很多因素,手機的最大堆大小等。Android圖片文件大小限制以及如何處理大圖片?
如果要顯示它們並使它們可以交互,還有處理大圖像的任何解決方法嗎?
如果您已經解碼了圖像數據,可以將它們存儲在存儲器 的文件中,然後對該緩衝區進行mmap映射。
然後你就可以通過createBitmap function
MMapped內存區域創建了這個緩衝區子圖像(磚)不計agains堆,不受垃圾收集 並通過繞過通常的文件操作尋呼子系統處理。
如果你想顯示整個圖像全屏然後委託它來建立,在應用程序:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(uri, "image/jpeg");
startActivity(i);
當你想顯示爲縮略圖等等然後讀this doc。
要壓縮大圖像尺寸,你可以使用有關大位圖的工作和處理內存限制
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
是不是我所要求的,但無論如何感謝。 – Warpzit
本文會談。它還討論了導致OutOfMemoryError的一些因素,例如堆大小,其他位圖加載到內存和內存碎片。最後,它提供了一種算法,將最大可能的圖像文件動態加載到內存中並執行轉換。
http://bricolsoftconsulting.com/handling-large-images-on-android/
是的,但這基本上只是降低質量。大部分時間不是解決方案:) – Warpzit
你發現了嗎? – Lijo
@Lijo據我所知,有很多支持這個功能的庫。只需搜索可縮放的圖像。此外Android現在支持svg/vector圖像。 – Warpzit