+ (UIImage *)imageWithMaxSide:(CGFloat)length sourceImage:(UIImage *)image
{
CGFloat scale = [[UIScreen mainScreen] scale];
CGSize imgSize = CWSizeReduce(image.size, length);
UIImage *img = nil;
UIGraphicsBeginImageContextWithOptions(imgSize, YES, scale); // 創(chuàng)建一個(gè) bitmap context
[image drawInRect:CGRectMake(0, 0, imgSize.width, imgSize.height)
blendMode:kCGBlendModeNormal alpha:1.0]; // 將圖片繪制到當(dāng)前的 context 上
img = UIGraphicsGetImageFromCurrentImageContext(); // 從當(dāng)前 context 中獲取剛繪制的圖片
UIGraphicsEndImageContext();
return img;
}
static inline
CGSize CWSizeReduce(CGSize size, CGFloat limit) // 按比例減少尺寸
{
CGFloat max = MAX(size.width, size.height);
if (max < limit) {
return size;
}
CGSize imgSize;
CGFloat ratio = size.height / size.width;
if (size.width > size.height) {
imgSize = CGSizeMake(limit, limit*ratio);
} else {
imgSize = CGSizeMake(limit/ratio, limit);
}
return imgSize;
}
|