मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन एक NSData
वस्तु बनाने सिर्फ बाइट प्राप्त करने के लिए एक छवि का आकार वास्तव में महंगा ऑपरेशन हो सकता है। छवि 20Mb पर और समान रूप से आकार वस्तु बनाने सिर्फ पहले एक का आकार प्राप्त करने के लिए कर सकते हैं ...
मैं इस श्रेणी का उपयोग करते हैं:
UIImage + CalculatedSize.h
#import <UIKit/UIKit.h>
@interface UIImage (CalculatedSize)
-(NSUInteger)calculatedSize;
@end
UIImage + CalculatedSize.m
#import "UIImage+CalculatedSize.h"
@implementation UIImage (CalculatedSize)
-(NSUInteger)calculatedSize
{
return CGImageGetHeight(self.CGImage) * CGImageGetBytesPerRow(self.CGImage);
}
@end
आप बस 012 आयातऔर इसे इस तरह का उपयोग करें:
NSLog (@"myImage size is: %u",myImage.calculatedSize);
या, यदि आप श्रेणियों का उपयोग कर से बचना चाहते हैं:
NSUInteger imgSize = CGImageGetHeight(anImage.CGImage) * CGImageGetBytesPerRow(anImage.CGImage);
संपादित करें:
निश्चित रूप से इस गणना जेपीईजी के साथ कोई संबंध नहीं है/पीएनजी संपीड़न। यह अंतर्निहित CGimage से संबंधित है:
एक बिटमैप (या नमूना) छवि पिक्सल का एक आयताकार सरणी प्रत्येक पिक्सेल एक भी नमूना या एक स्रोत छवि में डेटा बिंदु का प्रतिनिधित्व करता है, साथ।
इस तरह से एक आकार को पुनः प्राप्त करने के तरीके से आपको वास्तव में एक महंगी अतिरिक्त वस्तु बनाने के बिना सबसे खराब स्थिति परिदृश्य जानकारी मिलती है।
स्रोत
2013-12-20 14:03:55
धन्यवाद यह मेरे लिए काम करता है ... :) :) – devsri
UIImageJPEGRepresentation में संपीड़न गुणवत्ता के लिए सही मूल्य क्या होना चाहिए? मैं यहां 0.5 देखता हूं, जो मेरे गणना आकार को मूल से छोटा बनाता है और 1 इसे बड़ा बनाता है। – R3D3vil
यह बहुत गलत है। – Milo