2013-02-10 2 views
1

NSData/UIImage 데이터 표현을 JPEG로 변환하여 HTTP로 PHP 파일로 보내어이 문자열을 데이터베이스에 저장 한 다음 나중에 응용 프로그램에서 다시 검색 할 수 있습니까? NSData/UIImage 객체로 다시 변환 하시겠습니까?NSData/UIImage to String

Base64 인코딩 라이브러리를 사용해 보았지만 이미지가 HTML 페이지에 올바르게 표시되지 않기 때문에 base64가 유효하지 않은 것으로 보입니다.

제안 사항?

편집. 나는 다음과 같은 라이브러리를 사용했다

:

http://www.imthi.com/blog/programming/iphone-sdk-base64-encode-decode.php

그리고 다음과 같은 방법으로 변환 : 나는 파일로 저장할 때이 있지만, BASE64 많이를 마시기 않습니다

NSData *imageData = UIImageJPEGRepresentation(MyImage.image, 90); 
[Base64 initialize]; 
NSData *encoded = [Base64 encode:imageData]; 
NSLog(@"%@",encoded); 

및 그것을 보려고하면, 나는 크롬에 eror loading image [?]를 얻는다.

감사

+2

Base64가 정상적으로 작동합니다. 사실 인라인 HTML 이미지를 만들 때 Base64가 사용됩니다. 당신의 시도에 뭔가 잘못된 것이 있어야합니다.다시 한번 시도해보고 성공하지 못하면 코드로 질문을 업데이트하십시오. 그러면 살펴 보겠습니다. – Rob

+0

위의 게시물 –

+0

을 보조 노트로 업데이트했습니다. img 데이터를 문자열로 저장하지 마십시오. b64는 전송에 문제가 없지만 저장소에 좋지 않습니다. –

답변

3

NSData 대상을 64로 인코딩하는 요점은 보다 쉽게 ​​저장하거나 전송할 수있는 문자열로 데이터를 나타낼 수 있습니다. 그런 다음 기본 64로 인코딩 된 문자열을 다시 NSData으로 디코딩해야합니다. 이 데이터를 사용하여 새 UIImage을 만들 수 있습니다. 원래 데이터를 되 찾으려면 서버가이 디코딩을 수행해야합니다.

코드에 실수가 있습니다. 이 줄은 :

NSData *encoded = [Base64 encode:imageData]; 

가 있어야한다 : 당신이 문자열이 아닌 데이터를 다시 얻을

NSString *encoded = [Base64 encode:imageData]; 

알 수 있습니다.

인코딩 된 문자열을 파일에 쓴 다음 이미지를 볼 수 없다고 댓글을 달았습니다. 당연히 아니지. 이미지 데이터를 파일에 기록하여 실제로 이미지로 볼 수 있도록하려면 먼저 데이터를 인코딩하지 마십시오. 원시 이미지 데이터를 파일에 씁니다.

UIImage *image = _btnaddCountryIcon.imageView.image; 
NSData *imageData = UIImagePNGRepresentation(image); 
NSString *base64 = [Base64 encode:imageData]; 

직접 당신이있는 NSString으로 변환 할 수 있습니다

-1

당신이 다음과 같이있는 UIImage하는

NSString *imageOne = [self encodeBase64WithData:[imageDict objectForKey:@"ImageOne"]]; 

다시 문자열을 encodeBase64WithData

를 사용하여 해당 문자열로 ATA 변환 첫째을 NSData &에있는 UIImage 변환이 같은 문자열로 이미지를 변환 할 수 있습니다

[UIImage imageWithData: [self decodeBase64WithString:[registerDataDict objectForKey:@"imageOne"]]]; 
+0

imageDict 란 무엇입니까? –

+0

그것은 " '을 NSData'에 대한 가시적 @ 인터페이스가 선택기를 선언하지 내가이 impliment하려고 노력하지만 오류를 얻을 수있는 NSData –

+0

에있는 UIImage을 변환 한 후 오는을 NSData를 포함 'objectForKey' 도 구현 : 을 NSData * imageData의 = UIImageJPEGRepresentation (MyImage.image, 90); NSString * imageOne = [imageData objectForKey : @ "ImageOne"]] –

-1

당신은 당신이 직접이 방법처럼 사용할 수 있습니다 Base64.h

을 가져와야합니다. 이 코드는 나를 위해 잘 작동합니다.

희망이 도움이 될 것입니다.

+3

OP는 이미 인코딩 된 문자열을 얻었음을 OP에서 이미 언급했습니다. – rmaddy

+0

이미지를 업로드 할 때이 점을 사용하고 있습니다 . – Nirav

+2

그게 중요한 것이 아닙니다. "대답"은 질문에 답하지 않습니다. 이미 OP가 어떻게해야하는지 알고 있습니다. 이미지 데이터에서 기본 64 문자열을 가져옵니다. – rmaddy