1

4S でのみ発生するクラッシュがあります (3GS では発生しません)。@2xのせいではないかと疑っています。基本的に、画像の生のバイトを取得して操作します。これが私が持っている質問です。

以下のサンプル コードに記載されているように、画像を読み込みます。最後に、uiWidth は 2000、cgwidth は 2000 になるはずです。(画像がカメラ ロールからロードされた場合でも、それは true でしょうか? または、その自動スケーリングと uiWidth は 4000 になりますか?)

//test.jpg is 2000x 1500 pixels.
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];

int uiWidth = image.size.width;

CGImageRef cgimg = image.CGImage;

int cgWidth = CGImageGetWidth(cgimg);

ご協力ありがとうございました。

4

1 に答える 1

13

size報告されるのUIImageは、ピクセルではなくポイントです。scaleの性質を考慮する必要がありますUIImage

つまり、1000x1000 の場合、test.jpg1000x1000UIImage.sizeと報告されます。test@2x.png2000x2000 の場合、1000x1000UIImage.sizeも報告されます。しかし、2 番目のケースでは、2UIImage.scaleを報告します。

CGImageGetWidthポイントではなく、ピクセル単位で幅を報告します。

于 2012-10-30T03:01:48.393 に答える