如何从文件中获取CGImageRef?

时间:2010-05-07 18:43:26

标签: iphone objective-c

所以我知道你可以使用UIImage从文件中获取CGImage ...

UIImage *img = [UIImage imageNamed:@"name.bmp"];
[img CGImage];

但是,有没有办法在不使用CGImageRef的情况下获得UIImage

(我在一个无法访问UIKit的静态库中尝试这个)我可以在必要时使用其他框架,而不是UIKit。 CIImage会有效吗?或NSBitmapImageRep

2 个答案:

答案 0 :(得分:19)

你可以从NSData获得它:

CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@""]);
CGImageRef image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); // Or JPEGDataProvider

您必须确定数据是JPEG或PNG才能使其正常工作。

答案 1 :(得分:1)

您必须了解使用[UIImage imageNamed:@" name.bmp"]通过UIKit框架工作。这不是线程安全的。 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);