0

非常に奇妙な動作ですが、できる限り問題を絞り込んだと思います

私は を持っています。NSImageそれを と呼びましょうinputImage。それが重要な場合、それは a の aNSBitmapImageRepで表されます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、すべてのピクセルが元の画像からわずかに右にずれていることです。

inputImage:
ここに画像の説明を入力

testImage:
ここに画像の説明を入力

画像を保存すると見やすくなりますが、すべての画像testImageが約 5 ピクセルほど右にオフセットされていることがわかります。黒いコンテンツの左側に白いギャップが表示されます。testImage

5 行のコードのどこかで、どういうわけか画像を移動しています。これがどのように起こっているのか、誰にも分かりますか?現在疑っているTIFFRepresentation

4

1 に答える 1