ios - Scale an image to a given NSData byte size - PNG compression -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 5 जवाब

अगर मेरे पास एक UIImage और मैं एनएसडीएटा में कनवर्ट करता हूं, मैं देख सकता हूं कि यह कितने बाइट्स है।

यदि मेरे पास एक वैरिएबल required size है और मैं इसे एक निश्चित लम्बाई और चौड़ाई में सेट करना चाहता हूं ताकि जब इसे एक पीएनजी फाइल एनएसडीटा UIImagePNGRepresentation () के रूप में प्रदान किया जाता है; यह एक निश्चित बाइट-आकार ( आवश्यक साइज़ ) है।


मुझे पता है कि वर्तमान बाइट आकार कैसे प्राप्त करें [NSData length मुझे पता है कि एक UIImage को कम करने के लिए कैसे करें (यदि कोई बेहतर तरीका है तो कृपया मुझे बताएं)

  // UIImage * tempImage = whateverTheImagePointerIs; पूर्णांक tempWidth = tempImage.size.width / 2; // 50% चौड़ाई की मूल पूर्णांक tempHeight = tempImage.size.height / 2; // मूल UIImageView की 50% ऊंचाई * tempImageRender = [[UIImageView alloc] initWithFrame: CGRectMake (0 , 0, tempWidth, tempHeight)]; TempImageRender.image = tempImage; UIGraphicsBeginImageContextWithOptions (tempImageRender.bounds.size, tempImageRender.opaque, 1.0); [TempImageRender.layer renderInContext: UIGraphicsGetCurrentContext ()]; UIImage * tempFinalImage = UIGraphicsGetImageFromCurrentImageContext (); UIGraphicsEndImageContext ();  

लेकिन जब मैं इसे चौड़ाई पर 50% और ऊंचाई पर 50% (25% शुद्ध-कुल) नए गाया स्केल छवि के अंतिम बाइट (जब इसे पीएनजी में परिवर्तित किया जाता है UIImagePNGRepresentation (); ) का उपयोग मूल बाइट्स का 25% नहीं है ... यह सिर्फ यादृच्छिक (मुझे यकीन है कि यह हो रहा है क्योंकि पीएनजी संपीड़न एल्गोरिदम छवि गुणवत्ता / आकार के साथ बदलते हैं।)


क्या किसी दिए गए बाइट आकार में छवि का आकार बदलने का कोई तरीका नहीं है?

एक छवि को काफी प्रभावी ढंग से कैसे स्केल करें:

जैसा कि आपने पाया है, जब वास्तव में संकुचित होने पर छवि आकार और डेटा आकार के बीच कोई प्रत्यक्ष संबंध नहीं है, तो आपको बस करना होगा यह फिर से है:

  - (एनएसडीटा *) png रेपेरेसेक्शन विथ मैक्ससिज़: (एनएसआईएनटेगर) मैक्ससिज़ {UIImage * image = self; जबकि (1) {एनएसडीटा * डेटा = UIImagePNG प्रतिचित्रण (छवि); यदि (डेटा. लैंफ़ & lt; maxSize) रिटर्न डेटा; CGSize आकार = image.size; छवि = [UIImage imageScaledToSize: CGSizeMake (image.size.width / 2., image.size.height / 2.)]; } वापसी शून्य; }  

ध्यान दें कि मुझे लगता है कि आप संदर्भित स्केलिंग कोड को यूआईमेज पर एक श्रेणी पद्धति में बदलने के लिए और उपरोक्त विधि को UIImage श्रेणी में भी डालते हैं।

< / html>

Comments

Popular posts from this blog

c# - Highlight all words containing a letter in a richtextbox -

Editing Python Class in Shell and SQLAlchemy -

java - JavaFX WebEngine Video Playback in Linux -