Как именно сделать CGImageRef из образа на диске - PullRequest
6 голосов
/ 23 августа 2010

Я везде огляделся безрезультатно.Я делаю некоторую загрузку изображений в потоке, и, поскольку UIKit не является потокобезопасным, мне придется хранить изображения как CGImageRefs, но я не могу понять, как это сделать.Я не играл ни с одним из Кварцевых вещей прежде, поэтому это сбивает меня с толку.По сути, мне просто нужно загрузить JPG с диска в CGImageRef.Также для бонусных баллов есть ли способ загрузить GIF в CGImageRef?

Ответы [ 2 ]

30 голосов
/ 23 августа 2010

gcamp более или менее корректен, вы можете использовать его в фоновом потоке, но, отвечая на ваш вопрос, я думаю, что сработает следующее.

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

Существует также функция для изображений JPG, CGImageCreateWithJPEGDataProvider.

(не забудьте освободить поставщика данных и изображения, когда закончите)

9 голосов
/ 23 августа 2010

Я думаю, что самый простой способ - использовать UIKit и использовать CGImage свойство UIImage.

Примерно так:

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