非常奇怪的行为,但我认为我已经尽可能缩小了问题的范围
我有一个NSImage
,我们就叫它吧inputImage
。它由 aNSBitmapImageRep
中的 a表示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