2012-04-16 4 views
0

NSString을 UIImage로 변환하는 데 문제가 있습니다. EDIT1 : 나는 gtalk 서버에서 문자열로 사진을 다운로드하고 있으며 이미지로 사용하기 위해 5896efb83a92deaee41a30648cc9dbf7e9942b0e 파싱 된 파일을 파싱했다.NSString to UIImage

 
    NSString *myPicture = [presence photo]; 
    NSData *pic = nil; 

    if (![myPicture isEqualToString:@""]) { 
     pic = [myPicture dataUsingEncoding:NSUTF8StringEncoding]; 
    } 

    UIImage *picture; 

    NSLog(@"Photo %@", pic); 

    if (pic == nil) { 
     picture = [UIImage imageWithData:[Utils getAvatar]]; 
    } 

    else { 
     picture = [UIImage imageWithData:pic]; 
    } 
    NSLog(@"Picture %@", picture); 

로그

 
Photo 35383936 65666238 33613932 64656165 65343161 33303634 38636339 64626637 65393934 32623065 
Picture (null) 

picture = [UIImage imageWithData:[Utils getAvatar]]
가있는 부분은 잘

어떤 생각을 작동?

+1

그냥 의미가 없습니다. 그 안에 문자열이 그려진'UIImage'를 만들고 싶습니까? – Costique

+0

완전히 임의의 바이트 시퀀스에서 이미지가 생성 될 것으로 예상하십니까? 정확히 성취하려는 것은 무엇입니까? – Perception

답변

1

질문에서 당신이하려고하는 것이 분명하지 않습니다.

그림을 문자열로 저장하기위한 표준 규칙이 없으므로 [현재 사진]이 반환하는 형식을 설명해야합니다.

예를 들어, 문자열에 이미지의 파일 이름이 포함되어 있으면이 방법이 완전히 잘못되어 initWithContentsOfFile을 사용하여 이미지를로드해야합니다. Base64로 인코딩 된 URL이 포함되어있는 경우 Base64 디코딩 알고리즘 등을 사용하여 데이터를 디코딩해야합니다.

문자열이 원시 이진 이미지 데이터 인 경우이 작업은 매우 이상한 일입니다. 왜냐하면 NSString 원시 이진 데이터를 저장하기위한 것이 아니므로이 방법으로 사용할 수는 없지만 수행중인 경우 UTF8이 아닌 UTF16을 사용하여 데이터를 변환해야합니다. NSString의 자연스러운 내부 인코딩이기 때문입니다.

편집 : 후속 편집에서 문자열이 16 진수로 인코딩 된 것처럼 보이므로 16 진수 디코더를 사용하여 데이터로 변환해야합니다. 그 후

Convert hex data string to NSData in Objective C (cocoa)

여전히 데이터 (예 : PNG 대 JPEG)에 어떤 형식에 따라 추가 처리를 수행하지만, 전달 시도해야 할 수도 있습니다 : 여기에이 작업을 수행하는 방법에 대한 답이있다 intWithData에 데이터를 디코딩하고 어떻게 시작하는지 확인하십시오.

+0

이 방법은 합리적인 것 같아서 시도했지만 결과는 같습니다. 어쨌든 고맙습니다. – Vanya

+0

나는 gtalk 이미지 데이터의 형식에 대해 좀 더 알아야한다고 생각한다. –

0

희망이 당신에게 유용합니다.

picture = [[UIImage alloc] initWithData:pic];