Слишком много пикселей в моем NSBitmapImageRep при рисовании в NSImage
Я пытаюсь создать NSImage размером точно 200 x 300 пикселей из содержимого другого NSImage. Я не просто масштабирую, а беру это из куска гораздо большего изображения.
Полученное изображение выглядит точно так же, как и нужные мне пиксели. Однако их слишком много. NSImage сообщает о размере 200 x 300, а представления изображений сообщают о размере 200 x 300, но представления изображений сообщают о количестве пикселей в два раза больше: 400 x 600. Когда я сохраняю это представление изображения в файл, я получаю изображение это 400 х 600.
Вот как я это делаю:
NSRect destRect = NSMakeRect(0,0,200,300);
NSImage* destImage = [[NSImage alloc] initWithSize:destRect.size];
// lock focus, set interpolation
[destImage lockFocus];
NSImageInterpolation oldInterpolation = [[NSGraphicsContext currentContext] imageInterpolation];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
[_image drawInRect:destRect fromRect:srcRect operation:NSCompositeCopy fraction:1.0];
[destImage unlockFocus];
[[NSGraphicsContext currentContext] setImageInterpolation:oldInterpolation];
NSData* tiffImageData = [destImage TIFFRepresentation];
NSBitmapImageRep* tiffImageRep = [NSBitmapImageRep imageRepWithData:tiffImageData];
В отладчике вы можете видеть, что NSBitmapImageRep имеет правильный размер, но вдвое больше пикселей.
po tiffImageRep
(NSBitmapImageRep *) $5 = 0x000000010301ad80 NSBitmapImageRep 0x10301ad80 Size={200, 300} ColorSpace=(not yet loaded) BPS=8 BPP=(not yet loaded) **Pixels=400x600** Alpha=YES Planar=NO Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x10f353a40
Итак, когда я сохраняю его на диск, я получаю изображение размером 400 x 600, а не 200 x 300. Как это исправить?