获取用户帐户图像

发布于 2024-10-26 11:33:15 字数 50 浏览 0 评论 0原文

简单来说:如何获取用户的帐户图像?

我在 Mac 上使用 Cocoa。

Simply: how do I get the user's account image?

I'm using Cocoa on Mac.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

八巷 2024-11-02 11:33:15

如果用户删除了 vcard,地址簿方法将不起作用

我使用永不中断的 CBIdentity 方法,正如 Dave 所说:

+ (NSImage *)userImage
{
    CBIdentity *identity = [CBIdentity identityWithName:NSUserName() authority:[CBIdentityAuthority defaultIdentityAuthority]];
    return [identity image];
}

为了使用 CBIdentity,您需要将 协作框架 添加到您的目标并使用以下 include 指令

#import <Collaboration/Collaboration.h>

The Address Book method doesn't work if the user deletes the vcard.

I use the CBIdentity method that never breaks, as Dave says:

+ (NSImage *)userImage
{
    CBIdentity *identity = [CBIdentity identityWithName:NSUserName() authority:[CBIdentityAuthority defaultIdentityAuthority]];
    return [identity image];
}

In order to use CBIdentity you need to add the Collaboration Framework to your targets and use the following include directive

#import <Collaboration/Collaboration.h>
静谧幽蓝 2024-11-02 11:33:15

如果您只想要登录用户的图像,也可以使用 AddressBook 通过单行获取它:

NSData *imgData = [[[ABAddressBook sharedAddressBook] me] imageData];

但我相信这不能保证与登录相同在图像中。

If you only want an image for the logged-in user, it's also possible to get it with a one-liner using AddressBook:

NSData *imgData = [[[ABAddressBook sharedAddressBook] me] imageData];

but I believe that this is not guaranteed to be the same as the log-in image.

意犹 2024-11-02 11:33:15

如果您可以获得代表相关用户的 CSIdentityRefCBIdentity* 句柄,则可以调用 -[CBIdentity image] 检索其帐户图像的方法。

编辑:

这是我之前的一个答案,展示了如何查询系统上的所有标准用户帐户并将它们转换为 CBIdentity 对象:获取 OS X 上的所有用户

如果您不想链接到 Collaboration.framework,那么您可以使用类似 CSIdentityImageGetData(或类似变体之一)直接获取图像。我个人发现使用原生 Cocoa 对象更好,但在这种情况下,这并不是绝对必要的。

If you can get a handle to a CSIdentityRef or a CBIdentity* that represents the user in question, then you can invoke the -[CBIdentity image] method to retrieve their account image.

Edit:

Here's a previous answer of mine that shows how to query for all standard user accounts on a system and convert them into CBIdentity objects: Get all Users on OS X

If you don't want to link against Collaboration.framework, then you can use something like CSIdentityImageGetData (or one of the similar variants) to get the image directly. I personally find working with a native Cocoa object to be nicer, but in this case it's not absolutely necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文