簡體   English   中英

使用SDWebImage處理非常大的圖像下載

[英]Handling download of very large images with SDWebImage

我使用SDWebImage將圖像異步下載到我的UIImageView 收到的大多數圖像都是可接受的大小,可以輕松下載,並設置為UIImageView

但有時候,URL上的源圖像分辨率非常高(相對於我的imageView - 60x60的大小)。 在這種情況下,永遠不會設置圖像。 有時我的應用程序崩潰,有時,沒有任何反應(圖像保持nil ),並且在極少數情況下我收到類似的錯誤: Unable to allocate 400000 bytes of memory (我不完全確定確切的錯誤日志,我道歉) 。

例如, 從Pinterest的站點本身的Pinterest的圖標的圖像是巨大的(10000×10000)。 我的imageView永遠無法繪制此圖像。 目前,我已經硬編碼用這個替換圖像,但我知道這是不好的做法。 此外,這只是一種情況,可能會有無限多的圖像,這可能會影響用戶體驗。

我該如何處理這類案件?

只需檢查您收到的圖像大小,當大小遠大於您的圖像視圖接受的大小時,您可以調整圖像大小,此處鏈接用於調整圖像鏈接的大小。 調整大小后,您可以將其放在imageview中。 希望對你有所幫助。

我建議你使用這個AsyncImageView 我已經習慣了,它可以創造奇跡。 要調用此API:

ASyncImage *img_EventImag = alloc with frame;
NSURL *url = yourPhotoPath;
[img_EventImage loadImageFromURL:photoPath];
[self.view addSubView:img_EventImage];

它與使用UIImageView相同。 簡單,它可以為您完成大部分工作。 AsyncImageView包含UIImageView上的一個簡單類別,用於在iOS上異步加載和顯示圖像,以便它們不會鎖定UI,以及用於更高級功能的UIImageView子類。 AsyncImageView適用於URL,因此可以與本地或遠程文件一起使用。

加載/下載的圖像緩存在內存中,並在發生內存警告時自動清除。 AsyncImageView獨立於UIImage緩存運行,但默認情況下,位於應用程序包根目錄中的任何圖像都將存儲在UIImage緩存中,從而避免重復緩存的圖像。

該庫還可用於獨立於UIImageView加載和緩存圖像,因為它提供對底層加載和緩存類的直接訪問。

SDWebImage是開源庫。 將源添加到項目中並在SDWebImageDownloader.m中附加大小檢查

暫無
暫無

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

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