//이미지 비율을 유지하면서 최대 가로 or 높이보다 작은 이미지 사이즈 생성
+ (UIImage *)getScaledImage:(UIImage *)image scaledToMaxWidth:(CGFloat)width maxHeight:(CGFloat)height {
CGFloat oldWidth = image.size.width;
CGFloat oldHeight = image.size.height;
if (oldWidth < width && oldHeight < height)
return image;
CGFloat scaleFactorW =1;
CGFloat scaleFactorH =1;
if (oldWidth > width)
scaleFactorW = width / oldWidth;
if(oldHeight > height)
scaleFactorH = height / oldHeight;
CGFloat scaleFactor = (scaleFactorW<scaleFactorH)?scaleFactorW:scaleFactorH;
CGFloat newHeight = oldHeight * scaleFactor;
//CGFloat newWidth = oldWidth * scaleFactor;
CGSize newSize = CGSizeMake(width, newHeight);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
//이미지 비율을 유지하면서 최대 가로 보다 작은 이미지 사이즈 생성
+ (UIImage *)getScaledImage:(UIImage *)image scaledToMaxWidth:(CGFloat)width {
CGFloat oldWidth = image.size.width;
CGFloat oldHeight = image.size.height;
CGFloat scaleFactor=1;
if (oldWidth > width) {
scaleFactor = width / oldWidth;
} else //oldWidth<width and height==0이면, scale하지 않음.
return image;
CGFloat newHeight = oldHeight * scaleFactor;
CGFloat newWidth = oldWidth * scaleFactor;
CGSize newSize = CGSizeMake(newWidth, newHeight);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
댓글 없음:
댓글 쓰기