यदि आप यह नहीं जानते हैं कि क्या छवि पोर्ट्रेट या लैंडस्केप होगी (जैसे उपयोगकर्ता कैमरा के साथ तस्वीर लेता है), तो मैंने एक और तरीका बनाया जो अधिकतम चौड़ाई और ऊंचाई के मापदंडों को लेता है।
कहते हैं कि आपके पास UIImage *myLargeImage
4: 3 का अनुपात है।
UIImage *myResizedImage = [ImageUtilities imageWithImage:myLargeImage
scaledToMaxWidth:1024
maxHeight:1024];
यदि परिदृश्य में आकार संशोधित UIImage 1024x768 होगा; 768x1024 अगर पोर्ट्रेट। यह विधि रेटिना डिस्प्ले के लिए उच्च रेज छवियों को भी उत्पन्न करेगी।
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)size {
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(size, NO, [[UIScreen mainScreen] scale]);
} else {
UIGraphicsBeginImageContext(size);
}
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
+ (UIImage *)imageWithImage:(UIImage *)image scaledToMaxWidth:(CGFloat)width maxHeight:(CGFloat)height {
CGFloat oldWidth = image.size.width;
CGFloat oldHeight = image.size.height;
CGFloat scaleFactor = (oldWidth > oldHeight) ? width / oldWidth : height / oldHeight;
CGFloat newHeight = oldHeight * scaleFactor;
CGFloat newWidth = oldWidth * scaleFactor;
CGSize newSize = CGSizeMake(newWidth, newHeight);
return [ImageUtilities imageWithImage:image scaledToSize:newSize];
}
newWidth
यहां चर की आवश्यकता नहीं है , हालांकि यह पहले से ही हैi_width
।