2012-06-28 15 views
5

मैं एक ऐप बना रहा हूं जो UIImagePickerController का उपयोग करता है ताकि उपयोगकर्ता को कस्टम ओवरले के साथ एक कैमरा पेश किया जा सके जिसमें कैमरा "दृश्य" पर दो ग्रिड/पैटर्न शामिल हों।एक छवि को एक टिंट जोड़ना

ग्रिड स्वयं 0pमें .png फ़ाइलों को हैं जो ओवरले में जोड़े जाते हैं, वे काफी जटिल हैं इसलिए मैं वास्तव में ग्रिड को कोड में खींचने से दूर रहना चाहूंगा, भले ही मैं उपस्थित रहूं, मेरे प्रश्न का सरल जवाब।

मैं विभिन्न रंगों में ग्रिड पेश करने में सक्षम होना चाहता हूं। स्पष्ट समाधान अलग-अलग रंगों में अधिक .png छवियां बना रहा है, लेकिन प्रत्येक रंग के लिए चार अलग-अलग छवियां होनी चाहिए (प्रत्येक ग्रिड के लिए नियमित और रेटिना) ताकि जल्दी से बहुत सारी संपत्तियां जुड़ जाएंगी।

समाधान, जो मुझे लगता है, आदर्श होगा, मेरे लिए सिर्फ सफेद/ग्रे में ग्रिड बनाने के लिए होगा और उसके बाद इसे उचित रंग देने के लिए एक टिंट लागू करें।

क्या यह संभव है? या मुझे वैकल्पिक समाधान खोजने की ज़रूरत है?

+0

यहां देखें: http: //stackoverflow.com/questions/1117211/how-would-i-tint-an-image-programatically-on-the-iphone – shannoga

+2

क्या आपकी जांच [इस पोस्ट] [1] है? यह आपको जो चाहिए उसे करीब लगता है। [1]: http://stackoverflow.com/questions/1223340/iphone-how-do-you-color-an-image – Ananth

उत्तर

7
willc2 के जवाब में iPhone - How do you color an image?

के रूप में प्रश्न में सुझाव दिया कि मैं अपने कोड के लिए इस विधि को जोड़ दिया है करने के लिए मुझे इशारा करते हुए, संशोधन के साथ के लिए अनंत के लिए धन्यवाद के साथ

:

-(UIImage *)colorizeImage:(UIImage *)baseImage color:(UIColor *)theColor { 
    UIGraphicsBeginImageContext(baseImage.size); 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGRect area = CGRectMake(0, 0, baseImage.size.width, baseImage.size.height); 

    CGContextScaleCTM(ctx, 1, -1); 
    CGContextTranslateCTM(ctx, 0, -area.size.height); 
    CGContextSaveGState(ctx); 
    CGContextClipToMask(ctx, area, baseImage.CGImage); 
    [theColor set]; 
    CGContextFillRect(ctx, area); 
    CGContextRestoreGState(ctx); 
    CGContextSetBlendMode(ctx, kCGBlendModeMultiply); 
    CGContextDrawImage(ctx, area, baseImage.CGImage); 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

... और मैं ठीक वही कर रहा हूं जो मैं कर रहा हूं।

+0

इस प्रयोग न करें। यह छवि की गुणवत्ता को कम करता है। इसका उपयोग करें, कोई गुणवत्ता खोना नहीं: http://stackoverflow.com/a/4630136/320018 –

संबंधित मुद्दे