0

シンプルな画像を描画して保存しようとしていますが、MBP RD デバイスでは最終的に 2 倍の大きさで保存されます。

NSImage* image = [[NSImage alloc] initWithSize:size];
[image lockFocus];

[[NSColor blueColor] set];
NSRectFill(CGRectMake(0, 0, 100, 100));

[image unlockFocus];

// ... then save the image

// Cache the reduced image
NSData *imageData = [self TIFFRepresentation];
NSBitmapImageRep *imageRep = [NSBitmapImageRep imageRepWithData:imageData];
NSDictionary *imageProps = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:1.0] forKey:NSImageCompressionFactor];
imageData = [imageRep representationUsingType:NSPNGFileType properties:imageProps];
[imageData writeToFile:fileName atomically:NO];

// image is saved as 200 x 200 :(

一貫したサイズにしたいので、すべてのデバイスで 100x100

4

1 に答える 1

1

すべてのデバイスで一貫したピクセルサイズが必要なのはなぜですか? ピクセルを同じに保つと、表示されるサイズは Retina ディスプレイで小さくなります。ポイントを同じに保つと、表示されるサイズはどちらのディスプレイでも同じになりますが、基本的なピクセル数は 4 倍になります。アプリケーションに応じて、どちらの選択も有効です。

Retina ディスプレイを導入する際に、Apple はいくつかの高レベル API を再定義して、サイズをポイント単位で取得できるようにしました。他の低レベルのものはピクセル単位で動作します。アプリでテキスト、コントロール、ベクトル グラフィックスなどを使用している場合、Retina ディスプレイで変更せずに動作する可能性が高くなります。ビットマップ グラフィックスを使用する場合も動作する可能性がありますが、イメージが少しぼやける場合があります (OS X は Retina 解像度に必要な余分なピクセルを製造するため)。

あなたの場合、100 x 100 がポイントであることがわかりました。アプリケーションにこの 1 つの画像だけが含まれているとは思えないため、ピクセル レベルで操作したい場合は、間違いなく他の場所でこれに悩まされることになります。あなたがする必要があるのは、Apple のドキュメントを読むことです。OS X の高解像度ガイドラインは、始めるのに適した場所です。そこには、特に適用される可能性がある「座標の変換」セクションがあることがわかりますが、最初から始めてください;-)

HTH

于 2013-06-15T18:44:59.807 に答える