मैं एक ऐप बना रहा हूं जो उपयोगकर्ता को फोटो लेने या आईफोन पर लाइब्रेरी से एक चुनने और इसे पार्स बैकएंड पर अपलोड करने देता है।फ़ाइल आकार को कम करने के लिए छवियों को संपीड़ित करें
मुझे जिस समस्या का सामना करना पड़ रहा है वह फ़ाइल के आकार के संबंध में है।
मैंने पढ़ा है कि फेसबुक, ट्विटर, इंस्टाग्राम और Google जैसे बड़े खिलाड़ी रिज़ॉल्यूशन और फ़ाइल आकार के संबंध में क्या करते हैं लेकिन मैं इसके करीब नहीं जा सकता।
मुझे यकीन है कि उनके पास ऐसा करने के लिए सबसे अच्छा कोड और टूल्स हैं लेकिन मुझे आईओएस नियमित प्रक्रियाओं के साथ जितना संभव हो उतना अच्छा लागू करने में खुशी होगी।
- (UIImage *)normalResImageForAsset:(ALAsset*)asset
{
// Convert ALAsset to UIImage
UIImage *image = [self highResImageForAsset:asset];
// Determine output size
CGFloat maxSize = 1024.0f;
CGFloat width = image.size.width;
CGFloat height = image.size.height;
CGFloat newWidth = width;
CGFloat newHeight = height;
// If any side exceeds the maximun size, reduce the greater side to 1200px and proportionately the other one
if (width > maxSize || height > maxSize) {
if (width > height) {
newWidth = maxSize;
newHeight = (height*maxSize)/width;
} else {
newHeight = maxSize;
newWidth = (width*maxSize)/height;
}
}
// Resize the image
CGSize newSize = CGSizeMake(newWidth, newHeight);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Set maximun compression in order to decrease file size and enable faster uploads & downloads
NSData *imageData = UIImageJPEGRepresentation(newImage, 0.0f);
UIImage *processedImage = [UIImage imageWithData:imageData];
return processedImage;
}
मैं 1024px गुणा maximun स्वीकृत आकार (दोनों OT ऊंचाई के साथ) वहाँ कुछ प्रतिबंध शुरू करने के लिए और फिर मैं लागू करने कर रहा हूँ maximun बनाने के लिए कोशिश कर रहा हूँ:
यह अभी मैं क्या कर रहा है आकार को कम करने के लिए संपीड़न।
यह जेपीईजी को वास्तव में हानिकारक किए बिना छवि आकार का लगभग 50% काटता है और कटौती करता है लेकिन यह अभी भी बहुत कुछ है। विशेष रूप से अगर फोन के कैमरे के साथ फोटो लिया जाता है और अपलोड किया जाता है। संसाधित छवि में अभी भी 1 एमबी आकार हो सकता है जो कि बहुत अधिक है।
मुझे लगता है कि मैं कुछ उपयोगी कदम या गलत तकनीक का उपयोग कर सकता हूं।
किसी भी प्रतिक्रिया की सराहना की जाएगी।
मैं NSData करने के लिए UIImage से दोतरफा के बारे में सोच रहा हूँ और वापस UIImage करने के लिए। क्या आपने एक नया UIImage प्रारंभ करने से पहले [imageData लंबाई] की जांच की थी? शायद आप इस फ़ंक्शन से एन्कोडेड NSData ऑब्जेक्ट को वापस करना चाहते हैं, ताकि आप सर्वर पर बाइट सरणी अपलोड कर सकें। – umlum
उपयोगकर्ता को छवि का आकार चुनने की अनुमति दें और यदि आवश्यक हो तो अपलोड करने के लिए डेटा आकार के बारे में उन्हें चेतावनी दें। – Wain
@Wain लेकिन ओपी सही है कि 1024x768px पर, पूरी तरह संपीड़ित जेपीईजी छवि 1 एमबी नहीं लेनी चाहिए। – umlum