У меня есть приложение для редактирования изображений, которое работало до версии 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);
Поэтому, когда я просматриваю CIImage *test
10.10, он выглядит именно так, как я хочу. В 10.11 это пустое изображение того же размера. Я попытался просмотреть различия API для CGLayer и CIImage, но документация слишком сложна для меня. Кто-нибудь еще сталкивался с этой проблемой? Я предполагаю, что это должно быть что-то с инициализацией CGContextRef
, потому что все остальное в коде связано с размером