Как я могу получить CGImageRef из файла?
Итак, я знаю, что вы можете получить CGImage
из файла с помощью UIImage...
UIImage *img = [UIImage imageNamed:@"name.bmp"];
[img CGImage];
Но есть ли способ получить CGImageRef
без использования UIImage
?
(Я пытаюсь сделать это в статической библиотеке, которая не имеет доступа к UIKit). Я мог бы использовать другие фреймворки, если это необходимо, а не UIKit. Будет ли работать CIImage
? Или NSBitmapImageRep
?
Ответы
Ответ 1
Вы можете получить его из NSData:
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@""]);
CGImageRef image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); // Or JPEGDataProvider
Вы должны быть уверены, что данные были JPEG или PNG для этого.
Ответ 2
Вы должны понимать, что с помощью [UIImage imageNamed: @ "name.bmp" ] работает через UIKit framework. Это не является потокобезопасным. Пример для dispatch_apply вы должны использовать рамки Quartz.
// Through Quartz
NSString *maskFilePath = [[NSBundle mainBundle] pathForResource:@"mask" ofType:@"png"];
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([maskFilePath UTF8String]);
CGImageRef maskRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault);