2011-03-24 6 views
5

간단히 : 사용자 계정 이미지는 어떻게 얻습니까?사용자 계정 이미지 가져 오기

Mac에서 Cocoa를 사용하고 있습니다.

+0

어떤 언어를 사용하십니까? –

+0

@Radek Pro-Grammer : "Cocoa"는 Objective-C를 사용하고 있음을 의미합니다. –

+2

@Dave DeLong : 적어도 100 %는 사실이 아닙니다. Ruby 및 Python 바인딩을 사용할 수 있으며 Assembly도 옵션입니다. –

답변

7

사용자가 vCard를을 삭제하면 작동하지 않습니다 주소록 방법.

나는 데이브가 말한대로, 휴식 결코 CBIdentity 방법을 사용

당신이 당신의 목표에 협업 프레임 워크을 추가하고 다음을 사용할 필요가 CBIdentity를 사용하려면
+ (NSImage *)userImage 
{ 
    CBIdentity *identity = [CBIdentity identityWithName:NSUserName() authority:[CBIdentityAuthority defaultIdentityAuthority]]; 
    return [identity image]; 
} 

지시문 등을

#import <Collaboration/Collaboration.h> 
+1

이것을 사용하면'[identity image]'에 대해 nil을 얻지 만, 내 이미지는 시스템 환경 설정에서 컵케익입니다 :/ –

+0

이미지가 변경되면 알림을받을 수 있습니까? – uchuugaka

3

해당 사용자를 나타내는 CSIdentityRef 또는 CBIdentity*에 대한 핸들을 얻을 수있는 경우 -[CBIdentity image] 메서드를 호출하여 계정 이미지를 검색 할 수 있습니다.

편집 :

여기에 시스템의 모든 표준 사용자 계정에 대한 쿼리 및 CBIdentity 객체로 변환하는 방법을 보여줍니다 내 이전의 대답 : 당신이에 연결하지 않으려면 Get all Users on OS X

가 Collaboration.framework, 그러면 CSIdentityImageGetData (또는 유사한 변형 중 하나)과 같은 것을 사용하여 이미지를 직접 얻을 수 있습니다. 개인적으로 네이티브 코코아 개체로 작업하는 것이 더 멋지다는 것을 발견하지만,이 경우에는 꼭 필요한 것은 아닙니다.

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

하지만이 될을 보장 할 수 없습니다 이라고 생각 : 당신은 로그인 한 사용자에 대한 이미지를 원하는 경우

+0

죄송합니다. 조금 연구했지만 아직 코딩 방법을 잘 모르겠습니다. –

+0

@magikseb 수정 된 답변 –

+0

이미지가 변경된 경우 알림을받을 방법이 있습니까? CSIdentity 쿼리 콜백이 이미지 변경을 알리는 것 같지 않습니다. – uchuugaka

4

, 그것은 주소록 사용하여 한 줄에 그것을 얻을 수도 있습니다 로그인 이미지와 동일합니다.

+0

그래, 가능한 경우 사용자의 주소록 프로필 이미지뿐만 아니라 사용자 계정 이미지 (로그인 이미지)가 실제로 필요합니다. 어쨌든 고마워. –

+0

@magikseb 그럼 데이브의 방법이 갈 길인 줄 알았는데, 그게 내가 투표 한 이유야! :) –

+0

주소록을 통한 +1은 매우 흥미로운 아이디어입니다. OP가 원하는 것인지는 모르겠지만 정보를 찾는 데는 좋은 장소입니다. –