이미지 작업을하고 있습니다. 끝나면 이미지를 디스크에 PNG로 저장하려고합니다. 나는 다음과 같은 일을 해요 : 나는 NSBitmapImageRep 개체를 인쇄하면이 코드가 작동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];
}
하지만, 문제는 망막 맥 함께, 내가 다른 크기와 픽셀하는 구형을 얻을 내 이미지가 디스크에 저장 될 때,
imageRepresentation.pixelsWide = image.size.width;
imageRepresentation.pixelsHigh = image.size.height;
내가 얻을이 시간 :
$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>
은 내가 원래 크기를 유지하려면로서, 망막 규모에 대해 조심하지 픽셀 크기를 강제로 묶여 : 그것은 두 배 크기입니다 적당한 크기 나는 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>
어떤 생각이 어떻게이 문제를 해결하고, 원래의 픽셀 크기를 유지하기를?
'- [NSBitmapImageRep setSize :]'는 10.10 이후에만 사용 가능한 것으로 보입니다. 어째서 매버릭스에서 코드를 사용해 보았을 때 이미지의 크기가 조정되지 않는 이유는 무엇입니까? 예외는 발생하지 않지만 ... 어떤 크기로 전달 되든 원래 크기와 동일한 크기의 이미지를 얻고 있습니다. –
@ NicolasMiari'newRep'의 크기가 10.9이지만 10.10에서 실행되고 있어야하지만, 디스크에 기록 된 파일에는 여전히 2x 이미지가 포함되어 있습니다. 혹시 해결책을 찾았습니까? – Dov
네, 아래 Weichsel의 대답이 저에게 효과적이었습니다. –