10.10 まで動作していた画像編集アプリケーションがありますが、10.11 でバグが発生しました。
CIImage
で作成したものを表示すると-imageWithCGLayer
、10.11 でのみ (正しいサイズの) 空の画像として表示されます。
CGSize size = NSSizeToCGSize(rect.size);
size_t width = size.width;
size_t height = size.height;
size_t bitsPerComponent = 8;
size_t bytesPerRow = (width * 4+ 0x0000000F) & ~0x0000000F; // 16 byte aligned is good
size_t dataSize = bytesPerRow * height;
void* data = calloc(1, dataSize);
CGColorSpaceRef colorspace = [[[_imageController document] captureColorSpace] CGColorSpace];
CGContextRef bitmapContext = CGBitmapContextCreate(data, width, height, bitsPerComponent, bytesPerRow, colorspace, kCGImageAlphaNone | kCGBitmapByteOrder32Host);
CGLayerRef canvasLayer = CGLayerCreateWithContext(bitmapContext, scaledRect.size, NULL);
[self drawCanvasInLayer:canvasLayer inRect:scaledRect];
CIImage *test = [CIImage imageWithCGLayer:canvasLayer];
NSLog(@"%@",test);
そのため、10.10 で表示CIImage *test
すると、希望どおりに正確に表示されます。10.11 では、同じサイズの空白のイメージです。CGLayer と CIImage の API 差分を調べてみましたが、ドキュメントが濃すぎます。他の誰かがこの問題に出くわしましたか? CGContextRef
コード内の他のすべてはサイズに関連しているため、 の初期化を伴うものに違いないと思います