2013-07-10 72 views
2

我正在開發和iOS應用程序的iPad和我使用Grabkit爲了從Facebook,Twitter,閃爍和相機膠捲的圖像。爲了從最後一個獲得圖像,我需要將CGImage轉換爲UIImage,但我遇到了麻煩。就像如果我沒有得到任何圖像,因爲當我後來使用的UIImage,應用程序崩潰與此日誌:CGImage到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的UIImageView或簡單的UIImage。如果是視圖,則必須使用imgRef.image。 – ApolloSoftware

+0

這意味着CGImage是NULL,檢查一個斷點 – Andrea

回答

10

您應該使用的alloc初始化像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。這是一個嚴重的錯誤。此應用程序或其使用的庫正在使用無效的上下文,從而導致系統穩定性和可靠性的整體降級。這個通知是禮貌的:請解決這個問題。這將成爲即將到來的更新中的致命錯誤。 –