Очень странное поведение, но я сузил проблему вниз, насколько я могу идти, я думаю, чтоПри создании CGImage с массивом декодирования, на выходе имеет все эти пиксели компенсировано небольшое количество
У меня есть NSImage
, назовем его inputImage
. Он представлен NSBitmapImageRep
в CGColorSpaceCreateDeviceGray
, если это имеет значение
Я хочу создать из него CGImageRef
, но с перевернутыми цветами.
NSData *data = [inputImage TIFFRepresentation];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
NSBitmapImageRep *maskedRep = (NSBitmapImageRep*)[inputImage representations][0];
CGFloat decode[] = {0.0, 1.0};
maskRef = CGImageMaskCreate(maskedRep.pixelsWide,
maskedRep.pixelsHigh,
8,
maskedRep.bitsPerPixel,
maskedRep.bytesPerRow,
provider,
decode,
false);
NSImage *testImage = [[NSImage alloc] initWithCGImage:maskRef size:NSMakeSize(1280,1185)]; //the size of the image, hard-coded for testing
NSLog(@"testimage: %@", testImage);
Проблема заключается в том, когда я смотрю на testImage
, все пиксели немного смещены вправо от исходного изображения.
Это гораздо проще, чтобы увидеть, если вы сохраните фотографии прочь, но вы заметите, что все в testImage
смещена вправо приблизительно 5 пикселей или около того. Вы увидите белый зазор слева от черного содержимого в testImage
Где-то в моих 5 строках кода я каким-то образом перемещаю свое изображение. Кто-нибудь знает, как это может произойти? В настоящее время я подозреваю, что TIFFRepresentation
Совершенно спасибо! –