/ / Jak mogę uzyskać CGImageRef z pliku? - iphone, obiektyw-c

Jak mogę uzyskać CGImageRef z pliku? - iphone, obiektyw-c

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 № 1

Moż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);