簡體   English   中英

從文件加載大圖像

[英]Load huge image from file

我正在使用存儲在Environment.getDataDirectory()上的圖片,它們的寬度為1920寬,高度為1080,我想使用以下代碼將它們加載到圖像視圖中:

File imgFile = new File(Environment.getDataDirectory() + "/data/com.My.Package/files/Pictures/Sun.jpg");                
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                zoomImage.setImageBitmap(myBitmap);

但是在Android 6.0 (Samsung Galaxy S6 Edge)上出現此錯誤 ,在Android 5 (HTC One)上運行良好

W / OpenGLRenderer:位圖太大,無法上傳到紋理中(3240x5760,max = 4096x4096)

因此,現在提出一個問題:有沒有辦法避免這種錯誤並且沒有質量下降(我將需要這種質量,因為您可以縮放圖像)

如您的錯誤所指出,圖像太大,無法加載。

基本上,現在您要將整個圖像加載到內存中。

您必須獲得較小的/按比例縮小的位圖版本。

您可以使用BitmapFactory.Options輕松完成此操作,

這是一個鏈接,其中詳細介紹了用於此目的的推薦技術:developer.android.com/training/displaying-bitmaps/load-bitmap.html

我認為您應該嘗試使用Glide加載它。

該過程非常簡單,快速,並且希望不會有任何OOM。

只需在build.gradle編譯它

 compile 'com.github.bumptech.glide:glide:3.7.0'

接着

Glide
    .with(this)
    .load(imgFile)
    .into(zoomImage);

就是這樣,您再也不會希望再面對OOM了,我在許多應用程序中處理過圖像,而我也從未面對過OOM

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM