2009-02-01 3 views
5

UIImage가있는 iPhone 프로그램이 있습니다. 이 UIImage는 UIWebView의 javascript Image 객체로 전달되어야합니다. 나는이 같이있는 UIWebView에 보낼 데이터 URL을 사용하여이 작업을 수행 할 수있는 생각 :UIImage의 데이터 URL/PNG

[wview stringByEvaluatingJavaScriptFromString:@"loadimage('%d')",dataurlfromuiimage]; 

그래서, 나는 데이터로 내있는 UIImage를 전송해야합니다 : URL을. PNG 데이터를 얻을 수 있다면이 방법을 직접 수행 할 수 있습니다. 이것을 WebView로 보내는 더 좋은 방법이 있다면 좋을 것입니다.

답변

22

가 PNG 형식의 이미지의있는 NSData 표현을 얻으려면

NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

마찬가지로, 원자 :, 그리고 나는 '하지만 (로컬 URL로에 전달할 수 있다고 생각 : JPEG 표현은 당신이있는 NSData가 있으면, 당신은 writeToFile를 사용하여 문서 디렉토리에 쓸 수

NSData *dataForJPEGFile = UIImageJPEGRepresentation(yourImage, 0.9f); 

를 사용하여 얻을 수 있습니다 시도하지 않았다). 또 다른 방법은 François P.가 참조하는 Base64 NSData 카테고리를 사용하고 어떻게 든 Base64로 JavaScript에 전송하는 것입니다.

+1

대용량 이미지를 사용하는 경우 base64 + javascript 메서드를 사용하지 않으려는 경우가 있습니다. Safari는 base64 및 디코딩 된 버전을 모두로드합니다. 작은 이미지의 경우 또는 큰 이미지가 몇 개있는 경우 잘 작동해야합니다. – rpetrich

0

불행히도 UIImage 구조에 저장된 디코딩 된 픽셀 정보가 아니라 이미지의 파일 표현으로 UIImage를 변환해야합니다. 즉, 어떻게 든 임시 파일에 쓰고 파일의 원시 NSData 바이트 (아마도 JPEG 또는 PNG)를 가져와야합니다. 그런 다음 BASE64 인코더를 사용하십시오. 나는 이미 애플에 의해 제공됩니다 생각하지 않는다, 그래서 당신 싶어이 글을 볼 수 있습니다 사용 http://www.cocoadev.com/index.pl?BaseSixtyFour

관련 문제