যদি চিত্রটি প্রতিকৃতি বা ল্যান্ডস্কেপ হবে (উদাহরণস্বরূপ ব্যবহারকারী ক্যামেরার সাহায্যে ছবি তোলেন) তা আপনি যদি না জানেন তবে আমি আরও একটি পদ্ধতি তৈরি করেছি যা সর্বোচ্চ প্রস্থ এবং উচ্চতার পরামিতি নেয়।
বলুন যে আপনার কাছে UIImage *myLargeImage
একটি 4: 3 অনুপাত।
UIImage *myResizedImage = [ImageUtilities imageWithImage:myLargeImage
scaledToMaxWidth:1024
maxHeight:1024];
ল্যান্ডস্কেপ হলে পুনরায় পরিবর্তিত ইউআইআইজেজ হবে 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
।