平時開發(fā)的時候經(jīng)常會遇到需要將圖片進(jìn)行等比縮放的需求,但是本身圖片的寬高比與需要等比縮放的寬高比不一致的時候就不方便進(jìn)行縮放了。
于是我們可以通過對圖片進(jìn)行裁剪來實(shí)現(xiàn)修改寬高比:
+ (UIImage *)cutImage:(UIImage*)image
{
CGSize newSize;
CGImageRef imageRef = nil;
UIImageOrientation imageOrientation;
if (image.size.width > image.size.height) {
imageOrientation = UIImageOrientationRight;
if ((image.size.width / image.size.height) < (SCREEN_HEIGHT / SCREEN_WIDTH)) {
newSize.width = image.size.width;
newSize.height = image.size.width * SCREEN_WIDTH / SCREEN_HEIGHT;
imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));
} else {
newSize.height = image.size.height;
newSize.width = image.size.height * SCREEN_HEIGHT / SCREEN_WIDTH;
imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));
}
} else {
imageOrientation = UIImageOrientationUp;
if ((image.size.width / image.size.height) < (SCREEN_WIDTH / SCREEN_HEIGHT)) {
newSize.width = image.size.width;
newSize.height = image.size.width * SCREEN_HEIGHT / SCREEN_WIDTH;
imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));
} else {
newSize.height = image.size.height;
newSize.width = image.size.height * SCREEN_WIDTH / SCREEN_HEIGHT;
imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));
}
}
return [UIImage imageWithCGImage:imageRef scale:1.0 orientation:imageOrientation];
}
以上代碼將圖片分為橫圖和豎圖分別進(jìn)行了處理矿微。