画像に対していくつかの操作を行っています。完了したら、画像を 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 オブジェクトを印刷すると、異なるサイズとピクセル rect が得られ、イメージがディスクに保存されると、サイズが 2 倍になります。
$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>
これを修正して元のピクセルサイズを維持する方法はありますか?