以下のコードに示すように、画像ファイルを読み取り、変更を加えずに再表示していますが、次のエラーが発生します。
: CGBitmapContextCreate: サポートされていないパラメーターの組み合わせ: 8 整数ビット/コンポーネント; 16 ビット/ピクセル。1 成分色空間。kCGImageAlphaPremultipliedLast; 3792 バイト/行。
コードは次のとおりです。
CGImageRef sourceImage = theImage.image.CGImage;
CFDataRef theData;
theData = CGDataProviderCopyData(CGImageGetDataProvider(sourceImage));
UInt8 *pixelData = (UInt8 *) CFDataGetBytePtr(theData);
CGContextRef context;
context = CGBitmapContextCreate(pixelData,
CGImageGetWidth(sourceImage),
CGImageGetHeight(sourceImage),
8,
CGImageGetBytesPerRow(sourceImage),
CGImageGetColorSpace(sourceImage),
kCGImageAlphaPremultipliedLast);
CGImageRef newCGImage = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newCGImage];
CGContextRelease(context);
CFRelease(theData);
CGImageRelease(newCGImage);
theImage.image = newImage;
最近 Xcode 4.4 にアップグレードするまで、このコードは問題なく動作していました。
iPhone CGContextRef CGBitmapContextCreate のサポートされていないパラメーターの組み合わせの提案に従って、「CGImageGetColorSpace(sourceImage)」を「CGColorSpaceCreateDeviceRGB()」に置き換えましたが、次のエラーが発生しました。
: CGBitmapContextCreate: 無効なデータ バイト/行: 8 整数ビット/コンポーネント、3 コンポーネント、kCGImageAlphaPremultipliedLast の場合、少なくとも 15168 である必要があります。
次に、「CGImageGetBytesPerRow(sourceImage)」を「CGImageGetBytesPerRow(sourceImage)*4」に置き換えたところ、エラーはなくなりましたが、4X 縮小画像のコピーが横に並べて表示されました。
誰もこの問題に遭遇しましたか? Xcode 4.4 のアップグレードに関連していますか?
ありがとう!シャイ