Więc wiem, że możesz dostać CGImage
z pliku za pomocą UIImage ...
UIImage *img = [UIImage imageNamed:@"name.bmp"];
[img CGImage];
Ale czy istnieje sposób na uzyskanie CGImageRef
bez użycia a UIImage
?
(Próbuję tego w statycznej bibliotece, która nie ma dostępu do UIKit). W razie potrzeby mógłbym użyć innych ram, po prostu nie UIKit. CIImage
praca? Lub NSBitmapImageRep
?
Odpowiedzi:
18 dla odpowiedzi № 1Możesz go pobrać z NSData:
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@""]);
CGImageRef image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); // Or JPEGDataProvider
Musiałbyś być pewien, że dane były w formacie JPEG lub PNG, aby to działało.
1 dla odpowiedzi nr 2
Musisz zrozumieć, że użycie [UIImage imageNamed: @ "name.bmp"] działa poprzez framework UIKit. To nie jest bezpieczne dla wątków. Przykład dla dispatch_apply musisz użyć mechanizmu Quartz.
// Through Quartz
NSString *maskFilePath = [[NSBundle mainBundle] pathForResource:@"mask" ofType:@"png"];
CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([maskFilePath UTF8String]);
CGImageRef maskRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault);