2013-07-10 2 views
2

Я разрабатываю приложение iOS для iPad, и я использую Grabkit для получения изображений из Facebook, Twitter, Flicker и Camera Roll. Чтобы получить изображения из последнего, мне нужно преобразовать CGImage в UIImage, но у меня возникли проблемы с этим. Это как если бы я не получил никакого изображения, потому что, когда я использую UIImage спустя, приложение падает с этим журналом:CGImage to UIImage не работает

*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 653]' 

Я использую следующий код для преобразования CGImage:

UIImage* image = [UIImage imageWithCGImage:imgRef]; 

Так что этот код не разбивается, но когда я использую созданное изображение, он делает это. Что происходит? Код неправильный?

+0

дают нам больше кода !!! – ApolloSoftware

+0

- это imgRef a UIImageView или просто UIImage. Вы должны использовать imgRef.image, если это представление. – ApolloSoftware

+0

это означает, что CGImage NULL, проверьте с точкой останова – Andrea

ответ

10

Вы должны использовать Alloc Init как UIImage* myImage = [[UIImage alloc] initWithCGImage:myCGImage];

или вы могли бы попробовать это:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 
NSUInteger width = CGImageGetWidth(image); 
NSUInteger height = CGImageGetHeight(image); 
NSUInteger bytesPerPixel = 4; 
NSUInteger bytesPerRow = bytesPerPixel * width; 
NSUInteger bitsPerComponent = 8; 
int size = height*width*bytesPerPixel; 
unsigned char *rawData = malloc(size); 
CGContextRef context = CGBitmapContextCreate(rawData,width,height,bitsPerComponent,bytesPerRow,colorSpace,kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); 
CGColorSpaceRelease(colorSpace); 
CGContextDrawImage(context, CGRectMake(0,0,width,height),image); 
UIImage *newImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)]; 
CGContextRelease(context);  
free(rawData); 
+0

Я получаю эту ошибку при реализации этого решения. CGContextDrawImage: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недопустимый контекст и тем самым способствует общему ухудшению стабильности и надежности системы. Это уведомление является любезностью: устраните эту проблему. Это станет фатальной ошибкой в ​​предстоящем обновлении. –

Смежные вопросы