簡體   English   中英

iOS-查看高分辨率圖像

[英]iOS - View high resolution image

我想在imageview中顯示高分辨率的圖像。 這是我的工作

  1. 在后台准備UIImage
  2. 加載文件后,切換到主線程
  3. 顯示圖像[通過使用UIImageView的setImage:]

問題在於第三步有滯后。 花費幾秒鍾並加載文件。 如果圖像很大,我會收到內存警告和崩潰。 那么,有沒有一種方法可以使我從上到下繪制圖像 (就像瀏覽器一樣)? 我還需要保留圖像的質量。

有沒有一種方法可以達到我的要求。 提前致謝

UIImage在實際請求之前不會解碼其基礎圖像數據,當您將其分配給圖像視圖時,它將在主線程上發生。 因此,盡管您嘗試將圖像加載到后台線程中,但是工作被延遲了並且實際上發生在主線程上。

解決此問題的方法很棘手,通常涉及將圖像寫入新的圖形上下文以強制解碼,然后CGImageRef創建CGImageRefUIImage 所有這些都在后台線程上進行。 當您將新映像發送到主線程時,所有解碼都已經進行,您應該不會看到延遲。 這個問題有一些答案,證明了這種技術。

使用蘋果提供的標准API(據我所知)無法從上到下繪制圖像。 您將必須編寫自己的流式圖像解碼器,這將是一項艱巨的任務。

您可以使用SDWebImage框架為您提供幫助:

1.異步圖像下載器

2.自動圖像緩存。

3.避免重復。

您可以從以下網址下載此文件: https : //github.com/rs/SDWebImage

關於內存警告,這不僅是由於您的應用程序引起的,而且還歸因於所有在后台運行的應用程序對內存的有效使用,因此請嘗試停止在后台運行的應用程序。

如果圖像很大,我會收到內存警告和崩潰。

似乎您已經達到設備的“硬性”(與內存相關)限制,試圖立即將圖像加載並顯示到內存中。

那么,有沒有一種方法可以使我從上到下繪制圖像(如瀏覽器的方式)?

您應該嘗試使用CATiledLayer,它提供了一種繪制非常大的圖像而又不會引起內存占用的方法。

在這里您可以找到有關它的教程。

您還可以看一下PhotoScrollerNetwork項目:

  • 極快的磁貼渲染-視覺上比Apple的代碼(在文件系統中使用png文件)快得多

  • 您只需提供一個jpeg文件或URL,此代碼即可為您輕松快捷地完成所有切片操作

暫無
暫無

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

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