दिलचस्प पोस्ट
एसक्यूएल सर्वर के लिए ग्रुप स्ट्रिंग एकत्रीकरण / LISTAGG मैं तालिका में सह-घटना की गणना कैसे करूं? क्या मैं बहुत ज्यादा jQuery का उपयोग कर रहा हूं? कब मैं रेखा पार कर रहा हूँ? लंबे समय से चलने वाली PHP स्क्रिप्ट के लिए प्रगति दिखाएं AngularJS। नियंत्रक घटक के बाहर से नियंत्रक फ़ंक्शन को कैसे कॉल करें MKMapView स्क्रॉलिंग प्रतिबंधित करें Google Chrome ऑटो अपडेट को अक्षम कैसे करें? नोडजेएस एक्सप्रेस में मार्ग मैपिंग निकालें मैन्युअल रूप से एक एन्कोडिंग को निर्दिष्ट किए बिना मैं सी # में स्ट्रिंग्स का संगत बाइट प्रतिनिधित्व कैसे प्राप्त करूं? Androids lrucache का उपयोग कर उदाहरण एचटीटीपी पोस्ट का उपयोग करने के लिए ट्यूटोरियल और उद्देश्य-सी में आईफोन पर जीईटी मैं मेल () फ़ंक्शन के लिए त्रुटि संदेश कैसे प्राप्त करूं? मैं सी # में अपना खुद का इवेंट कैसे बना सकता हूं? Android java.net.UnknownHostException: होस्ट अनसुलझे है (रणनीति प्रश्न) जावा का उपयोग कर एक निर्देशिका में फाइल की संख्या की गिनती

घुमाए गए UIImageView के लिए कोई त्वरित और गंदे एंटी-अलायसिंग तकनीक?

मैं एक UIImageView (पूर्ण फ्रेम और आयताकार) मिल गया है कि मैं एक CGAffineTransform के साथ घूर्णन कर रहा हूँ UIImageView के UIImage पूरे फ्रेम भरता है जब छवि को घुमाया जाता है और खींचा जाता है तो किनारों को स्पष्ट रूप से दांतेदार दिखाई देते हैं क्या यह कुछ भी बेहतर बनाने के लिए कर सकता है? यह स्पष्ट रूप से पृष्ठभूमि के साथ विरोधी विरोधी नहीं है।

Solutions Collecting From Web of "घुमाए गए UIImageView के लिए कोई त्वरित और गंदे एंटी-अलायसिंग तकनीक?"

उचित एंटी-अलाइज विकल्प सेट करना याद रखें:

CGContextSetAllowsAntialiasing(theContext, true); CGContextSetShouldAntialias(theContext, true); 

कोर एनिमेशन परतों के किनारों को आईओएस पर डिफ़ॉल्ट रूप से एंटीअलियाज़ नहीं किया जाता है। हालांकि, एक ऐसी चीज है जिसे आप Info.plist में सेट कर सकते हैं जो किनारों के एंटीलिअसिंग को सक्षम करता है: UIViewEdgeAntialiasing

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

यदि आप इस विकल्प को सक्षम करने के प्रदर्शन का ओवरहेड नहीं चाहते हैं, तो एक कार्य-आसपास छवि के किनारे के आसपास एक 1px पारदर्शी सीमा जोड़ना है । इसका अर्थ है कि छवि के 'किनारों' अब किनारे पर नहीं हैं, इसलिए विशेष उपचार की आवश्यकता नहीं है!

नया एपीआई – आईओएस 6/7

इसके अलावा आईओएस 6 के लिए भी काम करता है, जैसा कि @ चिर्स ने बताया था, लेकिन आईओएस 7 तक सार्वजनिक नहीं बनाया गया था।

आईओएस 7 के बाद से, allowsEdgeAntialiasing की एक नई प्रॉपर्टी की allowsEdgeAntialiasing देता है allowsEdgeAntialiasing जो आपके मामले में सभी दृश्यों के लिए इसे सक्रिय करने के ऊपरी allowsEdgeAntialiasing बिना, वास्तव में आप जो चाहते हैं वही करता है! यह CALayer की एक संपत्ति है, इसलिए आप myView.layer.allowsEdgeAntialiasing = YES उपयोग कर एक UIView के लिए सक्षम करने के लिए।

बस अपनी छवि में 1px पारदर्शी सीमा जोड़ें

 CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height); UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, 0.0); [image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)]; image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

बस प्लस में हां के साथ "किनारे एंटीअलियाज़िंग के साथ रेन्डर" जोड़ें और यह काम करेगा।

मैं पूरी तरह से निम्न पुस्तकालय की सिफारिश करेगा

http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

इसमें UIImage के लिए कई उपयोगी एक्सटेंशन हैं जो इस समस्या को हल करते हैं और इसमें थंबनेल आदि उत्पन्न करने के लिए कोड भी शामिल है।

का आनंद लें!

मेरे पास चिकनी किनारों और तेज छवि होने का सबसे अच्छा तरीका यह करना है:

 CGRect imageRect = CGRectMake(0, 0, self.photo.image.size.width, self.photo.image.size.height); UIGraphicsBeginImageContextWithOptions(imageRect.size, NO, 0.0); [self.photo.image drawInRect:CGRectMake(1, 1, self.photo.image.size.width - 2, self.photo.image.size.height - 2)]; self.photo.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

Info.plist कुंजी को जोड़ना जैसे कुछ लोगों का वर्णन प्रदर्शन पर एक बड़ी हिट है और यदि आप इसका उपयोग करते हैं तो आप मूल रूप से इसे केवल एक ही स्थान की आवश्यकता के बजाय इसे सब कुछ करने के लिए आवेदन कर रहे हैं।

इसके अलावा, UIGraphicsBeginImageContext(imageRect.size); उपयोग न करें UIGraphicsBeginImageContext(imageRect.size); अन्यथा परत धुंधली हो जाएगी। आपको UIGraphicsBeginImageContextWithOptions जैसे मैंने दिखाया है का उपयोग UIGraphicsBeginImageContextWithOptions

मैं इस समाधान को यहां से मिला, और यह सही है:

 + (UIImage *)renderImageFromView:(UIView *)view withRect:(CGRect)frame transparentInsets:(UIEdgeInsets)insets { CGSize imageSizeWithBorder = CGSizeMake(frame.size.width + insets.left + insets.right, frame.size.height + insets.top + insets.bottom); // Create a new context of the desired size to render the image UIGraphicsBeginImageContextWithOptions(imageSizeWithBorder, NO, 0); CGContextRef context = UIGraphicsGetCurrentContext(); // Clip the context to the portion of the view we will draw CGContextClipToRect(context, (CGRect){{insets.left, insets.top}, frame.size}); // Translate it, to the desired position CGContextTranslateCTM(context, -frame.origin.x + insets.left, -frame.origin.y + insets.top); // Render the view as image [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // Fetch the image UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext(); // Cleanup UIGraphicsEndImageContext(); return renderedImage; } 

उपयोग:

 UIImage *image = [UIImage renderImageFromView:view withRect:view.bounds transparentInsets:UIEdgeInsetsZero];