2009-03-24 9 views
14

पर दो अन्य यूआईएममेज से यूआईएममेज बनाएं Iphone पर एक एनीमेशन लिखने की कोशिश कर रहा हूं, बिना किसी सफलता के, क्रैश हो रहा है और कुछ भी काम नहीं कर रहा है।आईफोन

जो मैं करना चाहता हूं वह सरल दिखाई देता है, यूआईएममेज बनाता है, और इसमें दूसरे यूआईएममेज का हिस्सा खींचता है, मुझे संदर्भ और परतों और सामानों के साथ थोड़ा उलझन मिलता है।

क्या कोई व्यक्ति कृपया इस तरह कुछ लिखने के लिए समझा सकता है (कुशलतापूर्वक), उदाहरण कोड के साथ?

+0

क्या आप वास्तव में एक नया यूआईएममेज चाहते हैं (कि आप डिस्क पर सहेज सकते हैं या उदाहरण के लिए नेटवर्क पर भेज सकते हैं) या क्या आप स्क्रीन पर दो यूआईएममेज लेना चाहते हैं, एक दूसरे के ऊपर? – rpetrich

+0

मैं एक अच्छी प्रारंभिक पुस्तक प्राप्त करने का सुझाव दूंगा। मैं वर्तमान में इसे पढ़ रहा हूं: http://www.iphonedevbook.com/ इसमें ड्राइंग और एनीमेशन आदि पर अध्याय हैं .. – bentford

+0

मुझे एक वास्तविक यूआईएममेज चाहिए, इसलिए मैं इसे एनीमेशन में उपयोग कर सकता हूं। मैंने कुछ दस्तावेज पढ़े हैं, लेकिन वे सभी दिखाते हैं कि बक्से और रेखाएं कैसे खींचना है, वास्तविक तस्वीर नहीं जो अधिक जटिल है। –

उत्तर

45

रिकॉर्ड के लिए, यह पता चला है काफी सरल है - सब कुछ आप जानना चाहते हैं नीचे दिए गए उदाहरण में कहीं है:

+ (UIImage*) addStarToThumb:(UIImage*)thumb 
{ 
    CGSize size = CGSizeMake(50, 50); 
    UIGraphicsBeginImageContext(size); 

    CGPoint thumbPoint = CGPointMake(0, 25 - thumb.size.height/2); 
    [thumb drawAtPoint:thumbPoint]; 

    UIImage* starred = [UIImage imageNamed:@"starred.png"]; 

    CGPoint starredPoint = CGPointMake(0, 0); 
    [starred drawAtPoint:starredPoint]; 

    UIImage* result = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return result; 
} 
+0

रेटिना डिस्प्ले में, परिणाम छवि की गुणवत्ता खराब है। रेटिना मोड के लिए –

+3

, 'UIGraphicsBeginImageContextWithOptions (आकार, नहीं, 0) का उपयोग करें; ' –

9

मैं सिर्फ dpjanes से ऊपर जवाब के बारे में एक टिप्पणी जोड़ना चाहते हैं, क्योंकि यह एक अच्छा जवाब है, लेकिन आईफोन 4 (उच्च रिज़ॉल्यूशन रेटिना डिस्प्ले के साथ) पर अवरुद्ध दिखाई देगा, क्योंकि "यूआईजीआरएक्सिक्स गेट इमेज फ्रॉम कंटेंट इमेज कॉन्टेक्स्ट()" आईफोन 4 के पूर्ण रिज़ॉल्यूशन पर प्रस्तुत नहीं करता है।

"... के साथ (विकल्प) " बजाय। लेकिन WithOptions के बाद से ही यह समर्थित है iOS 4.0 तक, आप कमजोर कड़ी यह (discussed here) उसके बाद निम्न कोड केवल नियुक्तियों संस्करण का उपयोग करने का उपयोग कर सकते उपलब्ध नहीं है:

if (UIGraphicsBeginImageContextWithOptions != NULL) { 
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); 
} 
else { 
    UIGraphicsBeginImageContext(); 
} 
+1

यह एक टिप्पणी होनी चाहिए –

3

यहाँ दो छवियों विलय करने के लिए एक उदाहरण है कि एक ही आकार में एक हैं। मुझे नहीं पता कि यह सबसे अच्छा है या नहीं जानता कि इस तरह का कोड कहीं और पोस्ट किया गया है या नहीं। यहां मेरे दो सेंट हैं।

+ (UIImage *)mergeBackImage:(UIImage *)backImage withFrontImage:(UIImage *)frontImage 
{ 

    UIImage *newImage; 

    CGRect rect = CGRectMake(0, 0, backImage.size.width, backImage.size.height); 

    // Begin context 
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0); 

    // draw images 
    [backImage drawInRect:rect]; 
    [frontImage drawInRect:rect]; 

    // grab context 
    newImage = UIGraphicsGetImageFromCurrentImageContext(); 

    // end context 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

उम्मीद है कि इससे मदद मिलती है।