0

NSImage (および対応する NSData) があり、そのイメージをデスクトップとして設定する必要があります。APple が画像を設定するために提供する唯一の方法は、

[NSWorkspace setDesktopImageURL:forScreen:options:error:]

NSImage または NSData から NSURL に変換するにはどうすればよいですか? imageData を保存するためにこれを行っています。

[imageData writeToFile:@"wallpaper" atomically:NO]; 

しかし、デスクトップとして設定するためにその URL を取得するにはどうすればよいでしょうか? 保存先の URL を取得する方法がわかりません。

4

1 に答える 1

2

あなたが尋ねた質問に正確に答えるには:

[NSURL fileURLWithPath:@"wallpaper"]

ただし、次のように、NSWorkspace に渡すのと同じ URL に実際にファイルを書き込む方が理にかなっています。

NSURL *url = [NSURL fileURLWithPath:@"wallpaper"];
[imageData writeToURL:url atomically:NO];
[[NSWorkspace sharedWorkspace] setDesktopImageURL:url …];

ファイルを置くのに適した場所を選ぶことは、さらに理にかなっています。原則として (ソフトウェアの外部であっても)、何かをどこに置いたかを知っていれば、誰かに「これをどこかに置いて」と言うよりも、後でそれを見つけるのがはるかに簡単になります。そして、あなたの特定の「これをどこかに置く」は、実際には「これを現在の作業ディレクトリに置く」ことを意味します。これは、書き込みアクセス権がない場所か、ユーザーが混乱させたくない場所か、すでにその中の「wallpaper」と呼ばれるファイル (またはディレクトリ)、または…</p>

したがって、おそらく -[NSFileManager URLForDirectory:inDomain:propertyForURL:create:error:] を呼び出して NSTemporaryDirectory を取得するか、別の一時ファイル API を使用する必要があります。または、一時的な場所ではなく、アプリのキャッシュ ディレクトリに配置することもできます。あなたにとって意味があると思われるものは何でも。

また、おそらくファイルに適切な拡張子を付けたいと思うでしょう。また、imageData をどこから取得したかを知らなければ、使用可能な画像ファイルを取得できるかどうかもわかりません。しかし、それはすべて別の問題です。

于 2012-06-14T21:18:33.537 に答える