gpt4 book ai didi

objective-c - 如何将 NSImage 或 NSData 设置为桌面图像?

转载 作者:行者123 更新时间:2023-12-03 17:41:51 26 4
gpt4 key购买 nike

我有一个 NSImage(及其相应的 NSData),我需要将该图像设置为桌面。看来Apple提供的唯一设置图像的方法是

[NSWorkspace setDesktopImageURL:forScreen:options:error:]

如何将 NSImage 或 NSData 转换为 NSURL?我这样做是为了保存图像数据:

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

但是我如何获取该 URL 以便将其设置为桌面?我不知道如何获取保存它的 URL。

最佳答案

准确回答您提出的问题:

[NSURL fileURLWithPath:@"wallpaper"]

但实际上将文件写入传递给 NSWorkspace 的同一 URL 更有意义,如下所示:

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

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

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

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

关于objective-c - 如何将 NSImage 或 NSData 设置为桌面图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com