Как сохранить файл PNG из NSImage (проблемы с сетчаткой)

Я делаю некоторые операции с изображениями, и после того, как я закончу, я хочу сохранить изображение в формате PNG на диске. Я делаю следующее:

+ (void)saveImage:(NSImage *)image atPath:(NSString *)path {

    [image lockFocus] ;
    NSBitmapImageRep *imageRepresentation = [[NSBitmapImageRep alloc] initWithFocusedViewRect:NSMakeRect(0.0, 0.0, image.size.width, image.size.height)] ;
    [image unlockFocus] ;

    NSData *data = [imageRepresentation representationUsingType:NSPNGFileType properties:nil];
    [data writeToFile:path atomically:YES];
}

Этот код работает, но проблема в Retina Mac, если я печатаю объект NSBitmapImageRep, я получаю другой размер и пиксели прямоугольные, и когда мое изображение сохраняется на диске, оно в два раза больше:

$0 = 0x0000000100413890 NSBitmapImageRep 0x100413890 Size={300, 300} ColorSpace=sRGB IEC61966-2.1 colorspace BPS=8 BPP=32 Pixels=600x600 Alpha=YES Planar=NO Format=0 CurrentBacking=<CGImageRef: 0x100414830>

Я привязал размер пикселя, чтобы он не заботился о масштабе сетчатки, так как я хочу сохранить исходный размер:

imageRepresentation.pixelsWide = image.size.width;
imageRepresentation.pixelsHigh = image.size.height;

На этот раз я получаю правильный размер при печати объекта NSBitmapImageRep, но когда я сохраняю свой файл, у меня все еще возникает та же проблема:

$0 = 0x0000000100413890 NSBitmapImageRep 0x100413890 Size={300, 300} ColorSpace=sRGB IEC61966-2.1 colorspace BPS=8 BPP=32 Pixels=300x300 Alpha=YES Planar=NO Format=0 CurrentBacking=<CGImageRef: 0x100414830>

Есть идеи, как это исправить и сохранить исходный размер пикселя?

Ответы на вопрос(5)

Ваш ответ на вопрос