我有一个图像编辑应用程序,它一直工作到 10.10,但在 10.11 中出现了一个错误
当我查看CIImage
创建的 w/-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);
所以当我CIImage *test
在 10.10 上查看时,它看起来就像我想要的那样。在 10.11 上,它是相同大小的空白图像。我尝试查看 CGLayer 和 CIImage 的 API 差异,但文档对我来说太密集了。有没有其他人偶然发现这个问题?我想它一定是带有初始化的东西CGContextRef
,因为代码中的其他所有内容都与大小相关