所以我知道你可以使用UIImage从文件中获取CGImage
...
UIImage *img = [UIImage imageNamed:@"name.bmp"];
[img CGImage];
但是,有没有办法在不使用CGImageRef
的情况下获得UIImage
?
(我在一个无法访问UIKit的静态库中尝试这个)我可以在必要时使用其他框架,而不是UIKit。 CIImage
会有效吗?或NSBitmapImageRep
?
答案 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);