2011-10-16 28 views
1

我一直對這個話題現在看到的這個論壇了一會兒,仍然沒有對如何成功地存儲核心數據圖像進行視網膜顯示清晰的畫面。iPhone的Retina顯示屏,核心數據的用戶生成的圖像

據我所知,通過核心數據存儲的圖像未必是最好的每一個人,但在它被用於某種原因做了情況,瞭解這些圖像是如何讀取並顯示是非常重要的。

由於圖像沒有文件擴展名,視網膜版本(如果存在)顯然不能有2個擴展名。

所以我希望有人可以告訴我如何通過應用程序創建位圖圖像,以便在視網膜和非視網膜設備中顯示最佳顯示方式。

例如,如果在我的非Retina的iPhone 3GS我有一個顯示55x60圖像一個UIImageView,我目前存儲圖像「縮略圖」,也就是55x60。

在視網膜上顯示,很明顯,我想有一個形象,是110x120顯示。

但是,因爲我不能創建核心數據擴展的圖像,我怎麼會去這樣做?

如果我決定只是爲了創建將用於兩個設備的一個形象,我只是一個110x120的圖像去?這是如何工作的 - 它會使用視網膜顯示設備的完整圖像,並縮小非視網膜設備的圖像嗎?或(和我希望不是),它會按比例縮小圖片用於非視網膜設備和視網膜再升規模回來?

在此先感謝!

回答

2

首先:不要存放在覈心數據的圖像。它只是更容易(和更好的性能!)存儲在文件系統中的圖像(即文檔目錄),並使用核心數據存儲參考。這就是說,如果你堅持使用核心數據來存儲這些數據,那麼你可以存儲Retina版本,然後檢測你在非視網膜設備上的時間,並且對非視網膜進行內存中的縮放版。

+0

謝謝,我已經存儲在CoreData的圖像,我會試圖改變它的未來。 (注意 - 不將圖像存儲在文件系統中使備份/恢復和iCloud存儲顯得更加複雜?)。無論如何,目前我想找到在Core Data中存儲圖像的最佳解決方案。你是說,如果我存儲(在我的例子說110x120)的視網膜版本,它會自動顯示在視網膜設備該決議沒有我做任何工作?那麼,是不是也會自動縮放圖像下來,沒有我做任何工作的非視網膜設備? – SAHM

+0

如果您的圖像視圖設置爲這樣,它將會縮放。 –

+0

我不認爲它是imageView特定的 - 我想我要問的是:當圖像是核心數據圖像時是否有任何「自動」縮放比例(與通過UIImage獲取的擴展圖像相比,imagedNamed等) )。如果2x版本不存在,帶擴展名的圖像會自動放大以便進行視網膜顯示。如果這是來自核心數據的圖像,是否有基於設備的自動縮放? – SAHM

0

是要存儲在UIImages CoreData讓您的圖片沒有得到由OS「乾淨的」自動的部分原因?

如果沒有,你應該做的韋恩提到的,只是建立在文件目錄中的文件路徑引用。

如果「清潔」是你要設法避免的問題,那麼就存儲的UIImage的NSData的作爲NSManagedObject的屬性之一,然後在使用它的規模適當。或者,您可以在將圖像放入CoreData之前將其縮放。

+0

我正在使用核心數據,因爲我模擬了我的圖像Core Data Recipes示例應用程序之後的存儲空間。目前,很多人都在積極使用這款應用,而我還沒有準備好將所有東西都改變。如果我從頭開始,這將是一個不同的答案...當我說我存儲圖像,我使用ImageToDataTransformer - 是存儲圖像的NSData相同的東西?在將圖像放入核心數據之前,我會對圖像進行縮放,但我不確定如何最好地爲圖像顯示正常工作做好準備。 – SAHM