2009-02-01 11 views
5

मेरे पास एक आईफोन प्रोग्राम है जिसमें यूआईएममेज है। इस UIImage को UIWebView में जावास्क्रिप्ट छवि ऑब्जेक्ट में स्थानांतरित करने की आवश्यकता है। मैं सोच रहा था इस किया जा सकता है एक डेटा यूआरएल मैं इस तरह UIWebView को भेजने का उपयोग करके:UIImage से डेटा यूआरएल/पीएनजी

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

तो, मैं एक डाटा में मेरी UIImage स्थानांतरित करने की आवश्यकता: यूआरएल। अगर मैं सिर्फ पीएनजी डेटा प्राप्त कर सकता हूं तो मैं इसे स्वयं कर सकता हूं, लेकिन मुझे नहीं पता कि यह कैसे करता है। यदि वेबव्यू को भेजने के लिए एक बेहतर तरीका है, तो यह भी अच्छा होगा।

उत्तर

22

PNG प्रारूप में अपनी छवि के एक NSData प्रतिनिधित्व प्राप्त करने के लिए, का उपयोग

NSData *dataForPNGFile = UIImagePNGRepresentation(yourImage); 

इसी तरह, एक जेपीईजी प्रतिनिधित्व

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

का उपयोग कर प्राप्त किया जा सकता एक बार जब आप NSData है, तो आप writeToFile का उपयोग कर अपने दस्तावेज़ डायरेक्टरी में लिख सकते हैं: atomically :, और उसके बाद मेरा मानना ​​है कि आप इसे एक स्थानीय URL के रूप में पारित कर सकते हैं (हालांकि मैं मैंने कोशिश नहीं की है)। एक विकल्प है बेस 64 एनएसडीटा श्रेणी का उपयोग करना जो फ्रैंकोइस पी संदर्भों और किसी भी तरह इसे जावास्क्रिप्ट को बेस 64 के रूप में भेजता है।

+1

आप बड़ी छवियों के लिए बेस 64 + जावास्क्रिप्ट विधि का उपयोग करने के लिए है के रूप में नहीं चाहते हो सकता है स्मृति का एक बहुत का उपयोग करता है - Safari दोनों बेस 64 रखने के लिए और लोड संस्करणों डीकोड होगा। छोटी छवियों के लिए अच्छी तरह से काम करना चाहिए या यदि आपके पास केवल कुछ बड़े हैं – rpetrich

0

दुर्भाग्य से, आप अपनी छवि, नहीं डीकोड पिक्सल जानकारी है कि UIImage संरचना में संग्रहीत किया जाता है की एक फ़ाइल प्रतिनिधित्व करने के लिए अपने UIImage बदलने की आवश्यकता होगी। यही है, आपको इसे किसी अस्थायी फ़ाइल में लिखना होगा और फ़ाइल के लिए कच्चे NSData बाइट प्राप्त करना होगा (शायद जेपीईजी कहां पीएनजी)। फिर BASE64 एन्कोडर का उपयोग करें। मुझे नहीं लगता कि यह पहले से ही एप्पल द्वारा प्रदान की जाती है, तो आप चाहते हैं इस लेख पर दिख सकता है: http://www.cocoadev.com/index.pl?BaseSixtyFour