1

ここで本当に基本的なものが欠けていると思います。存在することがわかっている正当な URL/パスを使用してこれを行う場合:

NSImage* img = [[NSImage alloc] initWithContentsOfFile:[[selectedItem url] path]];
NSLog(@"Image width: %d height: %d", [img size].width, [img size].height);

次に、幅が-2080177216で高さが0であることがコンソールに報告されます。幅が実際には50で高さが50であることはわかっていますが、isValidを呼び出してみるとYESが返され、サイズも確認しようとしました最初の表現であり、同じめちゃくちゃな値を返しました。画像が正しく読み込まれないのはなぜですか?

4

3 に答える 3

9

このsizeメソッドは、とメンバーのタイプが でNSSizeある struct を返します。あなたはそれらを として扱っています。使用して、すべてがうまくいくはずです。widthheightfloatint%f

于 2010-09-17T21:39:20.153 に答える
3

これは役に立ちますか?

setSize:

画像の幅と高さを設定します。

- (void)setSize:(NSSize)aSize

討論:

NSImage オブジェクトのサイズは、使用する前に設定する必要があります。イメージ表現が追加されたときにイメージのサイズがまだ設定されていない場合、サイズはイメージ表現のデータから取得されます。EPS 画像の場合、サイズは画像の境界ボックスから取得されます。TIFF 画像の場合、サイズは ImageLength および ImageWidth 属性から取得されます。

使用後に NSImage のサイズを変更すると、画像のサイズが効果的に変更されます。サイズを変更すると、すべてのキャッシュが無効になり、解放されます。画像が次に合成されると、選択した表現がオフスクリーン ウィンドウに描画され、キャッシュが再作成されます。

提供状況 Mac OS X v10.0 以降で利用可能。関連項目

于 2010-09-17T21:36:06.383 に答える
1

いくつかの写真で実際のサイズではないNSImageサイズを参照してください?

NSImageRepを反復処理し、見つかった最大値からサイズを設定する必要があります。

于 2012-06-27T00:16:07.173 に答える