2010-08-23 35 views
6

我環顧四周,無濟於事。我正在一個線程中進行一些圖像加載,因爲UIKit不是線程安全的我將不得不將圖像存儲爲CGImageRefs,但我無法弄清楚如何做到這一點。我還沒有玩過Quartz的任何東西,所以它讓我感到困惑。基本上我只需要從磁盤加載一個JPG到一個CGImageRef。同樣對於獎勵積分,是否有加載GIF到CGImageRef?如何正確地從磁盤上的映像製作CGImageRef

回答

28

gcamp或多或少是正確的,你是很安全的在後臺線程使用,但要回答你的問題,我相信下面會工作。

CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename("file"); 
CGImageRef image = CGImageCreateWithPNGDataProvider(dataProvider, NULL, NO, kCGRenderingIntentDefault); 

還爲JPG圖像,CGImageCreateWithJPEGDataProvider的功能。

(完成後一定要釋放的數據提供程序和圖像)

8

我認爲最簡單的方法是使用UIKit並使用UIImage的合理性。

類似的東西:

UIImage* image = [UIImage imageNamed:@"Your Image.png"]; 
CGImageRef imageRef = image.CGImage; 
+1

好吧但問題是,這是在一個線程中發生的事情和UIKit不是線程安全的。否則,我只是發回UIImage。我需要能夠從文件中讀取圖像,並直接爲其創建CGImageRef – Alexander 2010-08-23 18:04:16

+0

不幸的是,O.P.是正確的,Apple表示「所有的UIKit對象只能在主線程上使用」。 – 2010-08-23 18:04:39

+0

如果我沒有弄錯,UI更新應該在主線程上完成。 UIKit的其他部分實際上是線程安全的。 – gcamp 2010-08-23 18:17:27

相關問題