2011-03-24 86 views
5

簡單地說:我如何獲取用戶的帳戶圖片?獲取用戶帳戶圖片

我在Mac上使用Cocoa。

+0

你使用哪種語言? – 2011-03-24 20:31:11

+0

@Radek Pro-Grammer:「Cocoa」意味着他在使用Objective-C。 – 2011-03-24 20:33:36

+2

@Dave DeLong:這是至少100%不真實。 Ruby和Python綁定可用,Assembly也是一個選項。 – 2011-03-24 21:23:42

回答

7

地址簿方法不起作用,如果用戶刪除電子名片

我使用CBIdentity方法,從來沒有打破,戴夫說:

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

爲了使用CBIdentity您需要將協作框架添加到您的目標,並使用以下include指令

#import <Collaboration/Collaboration.h> 
+1

當我使用這個時,我得到了一個無['identity image]',但是我的圖像是系統偏好設置中的一個蛋糕:/ – 2011-12-08 11:07:25

+0

如果圖像改變了,有沒有辦法通知? – uchuugaka 2014-12-14 18:43:42

3

如果你能得到的句柄CSIdentityRef或表示有問題的用戶CBIdentity*,那麼你可以調用-[CBIdentity image]方法來檢索他們的帳戶形象。

編輯:

這裏是我的一個以前的答案,顯示瞭如何查詢系統上的所有標準用戶帳戶,並將其轉換爲CBIdentity對象:Get all Users on OS X

如果你不想來鏈接Collaboration.framework,那麼你可以使用像CSIdentityImageGetData(或其中一個類似的變體)直接獲取圖像。我個人發現使用本地可可對象更好,但在這種情況下,它不是絕對必要的。

+0

對不起,但已經研究了一下,我還不確定如何編碼? – 2011-03-24 20:13:52

+0

@magikseb編輯答案 – 2011-03-24 20:29:45

+0

如果圖像改變了,有什麼辦法可以通知嗎?如果可能的話,CSIdentity查詢回調似乎沒有注意到對圖像的更改 – uchuugaka 2014-12-14 18:45:40

4

如果你只是想在登錄用戶的圖像,它也可以使用通訊錄用一行代碼得到它:

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

,但我認爲,這不是保證是與登錄圖像相同。

+0

是的,我確實需要用戶帳戶圖像(登錄圖像),而不僅僅是用戶的地址簿配置文件圖像。無論如何,謝謝 – 2011-03-24 20:09:20

+0

@magikseb那麼我期望戴夫的方法是走的路,這就是我投票的原因! :) – 2011-03-24 20:13:48

+0

+1通過地址簿是一個非常有趣的想法。我不知道這是OP的要求,但它是查找信息的好地方。 – 2011-03-24 20:33:09