0

我有一个 NSImage(它是相应的 NSData),我需要将该图像设置为桌面。似乎苹果提供的设置图像的唯一方法是

[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 …];

选择一个放置文件的好地方更有意义。作为一般规则(即使在软件之外),如果您知道将某些东西放在哪里,那么以后找到它比告诉某人“把它放在某个地方”要容易得多。而你具体的“把它放在某个地方”实际上意味着“把它放在当前工作目录中”,这可能是你没有写权限的地方,或者用户不希望你弄乱的地方,或者它可能已经有了其中有一个名为“壁纸”的文件(或目录),或者……</p>

因此,您可能想要调用 -[NSFileManager URLForDirectory:inDomain:appropriateForURL:create:error:] 来获取 NSTemporaryDirectory,或者使用不同的临时文件 API。或者您可能希望将其放在应用程序的缓存目录中,而不是临时位置。任何对你来说都有意义的事情。

此外,您可能希望在文件上添加适当的扩展名。而且,在不知道您从哪里获得 imageData 的情况下,我不确定您是否会获得可用的图像文件。但这都是单独的问题。

于 2012-06-14T21:18:33.537 回答