我正在爲OS X的圖像瀏覽器應用程序工作。它與QuickLook非常相似:您選擇一個文件夾,應用程序顯示其中的第一個圖像,並且您可以使用箭頭鍵快速移至下一張/上一張照片。NSImageView:顯示大圖像
現在,我使用非常大的RAW格式圖片測試我的應用程序:例如,我有一個幾乎爲25 MB的.cr2文件。 NSImageView需要5到10秒來加載這種圖片。我希望從圖片到下一個圖片的過渡儘可能快。我看到2個選項:
1)逐漸加載圖片並在加載時顯示它(通過塊或逐步提高分辨率)。 可以做到這一點嗎?怎麼樣?
2)縮小圖片,使NSImageView可以立即顯示它們(我不在乎分辨率太多)。 您可以多快地縮放圖片?
謝謝!
也許會創建類似庫的東西(如iPhoto或光圈),並將圖像保存在那裏,或者如果這不可能只是所有已查看圖片的路徑。無論如何,您可以爲每張圖片保存縮略圖(如緩存)。文件名當然是不夠的,你需要一個散列,因爲用戶可能會改變圖像,但保留文件名。 (或者,如果某個路徑中的某個對象發生更改,您可以使用新的Finder API來獲得通知,但我並不熟悉這一點)。這是一個有點hacky和更多的解決方法,但它可能是一個起點... – HAS 2014-12-02 18:21:37
另一種選擇(或擴展)將縮小文件夾中的所有圖像(或最有可能接下來選擇的那些用戶)並將它們保存在數據庫中。您可以在後臺線程中執行此操作,以便界面始終負責。我認爲讓NSImageView調整圖像大小是最糟糕的解決方案,因爲它將整個圖像保存在內存中(如果我沒有記錯的話),將圖像加載到視圖中是一種阻塞操作。 – HAS 2014-12-02 18:26:15
@是的,我現在的解決方案是:當用戶選擇一個文件夾時,如果文件夾內有任何大圖像,我會詢問用戶是否要預先處理圖像。如果他們接受,我創建一個縮小圖像的臨時文件夾。如果沒有,該應用程序只需要一段時間來顯示較大的圖像。它不是很乾淨,這就是爲什麼我試圖找到更好的解決方案。 – Diego 2014-12-02 18:40:14