1

私のアプリケーションはNSImageオブジェクト(ペーストボードから来る)からカスタムオブジェクトを作成しようとしていますが、現在のプロセスは画像のURLのみを取り込んでいます。

この時点で大きな変更を避けたいので、NSImageのURLを取得する方法があるかどうか疑問に思いました(URLからNSImageを初期化できるので、それは合理的な期待のようです)

ありがとう。

編集(回答)

少し違うルートに行きました。ペーストボードのコンテンツをNSImageの配列として取得する代わりに、NSURLの配列として取得しました。その後、それらを自分のプロセスにフィードできます。

    NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
    NSArray *classArray = [NSArray arrayWithObject:[NSURL class]];
    NSDictionary *options = [NSDictionary dictionary];

    BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
    if (ok) {
        NSArray *URLs = [pasteboard readObjectsForClasses:classArray options:options];
    }
4

2 に答える 2

1

BlazingFrogによる引用:

(URLからNSImageを初期化できるので、それは合理的な期待のようです)

NSString次を使用してを初期化するとします。

NSString * theString = [NSString initWithContentsOfURL: encoding: error: ];

NSURLからオリジナルを取得することはできないと確信していますNSString
そして、私は同じことがに当てはまると確信していますNSImage。(実際、完全に確実です。)

確かNSImageにによって初期化することができますinitWithContentsOfURL:。ただし、または
で初期化することもできます。 を初期化するための厳密な要件はありません。 つまり、URLを使用せずに初期化される可能性があります。 これは、画像表現の単なるコンテナです。initWithData:initWithPasteboard:
NSURLNSImage
NSImage
NSImage

Appleによる引用

NSImageオブジェクトは、画像表現のグループを管理します。

ソリューション

  1. 'プロセス'を変更して受け入れNSImageます。
  2. を一時ファイルに書き込み、NSImageそのファイルパスを使用します。
于 2011-11-09T23:46:08.637 に答える
1

画像が標準のペーストボード(つまり、コピー/貼り付けメカニズム)を介して配信されている場合、URLがない可能性があるため、URLで画像を参照する方法はありません。たとえば、WordまたはPagesでドキュメントを開き、画像を選択してコピーする場合、その画像へのURL参照を作成する方法はありません。ペーストボード上にありますが、アクセス可能な形式のファイルシステムにはありません。

NSImageオブジェクトを直接処理するには、コードを変更する必要があると思います。

于 2011-11-10T00:23:59.947 に答える