イメージ上でいくつかの操作をしています。終了後、イメージをディスクに保存します。私は、次のことをやっている: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];
}
このコードが動作しているが、問題は、私はNSBitmapImageRepオブジェクトを印刷する場合、私はさまざまなサイズとピクセルRECTを取得し、私のイメージがディスク上に保存されている場合、網膜マックであり、
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>
は私が元のサイズを維持したいと、網膜の規模についての世話をしないようにピクセルサイズを強制的に結ば:それは2倍の大きさです右のサイズ私は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で動いている)ものに変更されていますが、ディスクに書き込まれたファイルにはまだ2倍の画像が含まれています。あなたは解決策を考案したことがありますか? – Dov
はい、Weichselの答えは私のために働いた。 –