comportement très bizarre, mais j'ai rétréci le problème vers le bas pour autant que je puis-je penserLors de la création d'un CGImage avec un tableau de décodage, la sortie a l'ensemble de ses pixels compensés par une petite quantité
J'ai NSImage
, appelons-le inputImage
. Il est représenté par un NSBitmapImageRep
dans un CGColorSpaceCreateDeviceGray
, si cela importe
Je veux créer un CGImageRef
à partir de celui-ci, mais avec des couleurs inversées.
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);
Le problème est quand je regarde testImage
, tous les pixels sont légèrement décalés vers la droite de l'image originale.
Il est beaucoup plus facile de voir si vous enregistrez les images hors, mais vous remarquerez que tout testImage
est décalé vers la droite d'environ 5 pixels ou plus. Vous verrez un espace blanc à gauche du contenu noir dans testImage
Quelque part dans mes 5 lignes de code, je suis en quelque sorte déplacer mon image sur. Est-ce que quelqu'un a une idée de comment cela pourrait se produire? Je suspecte actuellement TIFFRepresentation
Parfait merci! –