2013-02-06 68 views
16

की गुणवत्ता मैं का उपयोग कर छवि को मिटाने के लिए कोडdrawInRect: खोने छवि संकल्प

CGColorRef strokeColor = [UIColor whiteColor].CGColor; 

UIGraphicsBeginImageContext(imgForeground.frame.size); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
[imgForeground.image drawInRect:CGRectMake(0, 0, imgForeground.frame.size.width, imgForeground.frame.size.height)]; 

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, 10); 

CGContextSetStrokeColorWithColor(context, strokeColor); 
CGContextSetBlendMode(context, kCGBlendModeClear); 

CGContextBeginPath(context); 
CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y); 
CGContextStrokePath(context); 

imgForeground.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

निम्नलिखित कोशिश कर रहा हूँ लेकिन मैं सिर्फ अपने संकल्प की वजह से drawInRect खोने छवि का पता लगाना।

BeforeAfter

+0

अपलोड कर रहा है "से पहले" और "के बाद" स्क्रीनशॉट छवियों को एक सवाल दृश्यों को शामिल करने के बहुत मदद की होगी। – dasblinkenlight

+0

छवि अपलोड की गई कृपया –

+0

देखें यह स्पष्ट नहीं है कि "छवि संकल्प की गुणवत्ता खोने" का क्या मतलब है। शायद आप थोड़ा और विशिष्ट होने का प्रयास कर सकते हैं। – ipmcc

उत्तर

38

आप UIGraphicsBeginImageContextWithOptions बजाय UIGraphicsBeginImageContext के साथ जाना चाहिए, ताकि पैमाने कारक निर्दिष्ट किया जा सकता।

उदाहरण के लिए, इस उपकरण के मुख्य स्क्रीन के पैमाने कारक का उपयोग करेगा:

UIGraphicsBeginImageContextWithOptions(imgForeground.frame.size, NO, 0); 
+0

यदि छवि खिड़की के आकार का नहीं है तो क्या होगा? imgForeground.window.screen.scale –

+0

हाय के साथ प्रतिस्थापित करने के लिए क्या है! खैर, तीसरा पैरामीटर स्केल है और कोई आयाम नहीं है (यानी आकार)! सभी आईफ़ोन, आईपॉड टच इत्यादि के लिए जिनके पास रेटिना डिस्प्ले नहीं हैं, यह 1.0 एफ वापस कर देगा, जबकि रेटिना डिस्प्ले डिवाइसेज 2.0 एफ देगा। –

+1

'[[UIScreen mainScreen] पैमाने] के साथ' imgForeground.window.screen.scale 'को प्रतिस्थापित करें, इसलिए यह और स्पष्ट हो जाता है कि "स्क्रीन" का स्तर मतलब है! –