3

私は iPad 用の iOS アプリを開発しており、Grabkit を使用して、Facebook、Twitter、Flicker、およびカメラ ロールから画像を取得しています。最後の画像から画像を取得するには、CGImage を UIImage に変換する必要がありますが、問題が発生しています。後で UIImage を使用すると、アプリが次のログでクラッシュするため、画像を取得しなかった場合と同様です。

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

次のコードを使用して CGImage を変換しています。

UIImage* image = [UIImage imageWithCGImage:imgRef];

したがって、このコードはクラッシュしませんが、作成したイメージを使用するとクラッシュします。何が起こっている?コードが間違っていますか?

4

2 に答える 2

12

次のように 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);
于 2013-07-10T16:39:19.460 に答える