IOS 缩放图片常用方法

时间:2023-03-09 13:15:15
IOS 缩放图片常用方法
/**
* 指定Size压缩图片 (图片会压缩变形)
*
* @param image 原图
* @param size 压缩size
*
* @return 压缩后的图片
*/
-(UIImage*)OriginImage:(UIImage *)image scaleToSize:(CGSize)size
{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(size); // 绘制改变大小的图片
[image drawInRect:CGRectMake(, , size.width, size.height)]; // 从当前context中创建一个改变大小后的图片
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈
UIGraphicsEndImageContext(); // 返回新的改变大小后的图片
return scaledImage;
} /**
* 等比缩放图片裁剪指定区域图片
*
* @param image 原图
* @param size 裁剪范围
*
* @return 裁剪后的图片
*/
-(UIImage *)compressImageWith:(UIImage *)image scaleToSize:(CGSize)size
{
// 原图宽
CGFloat imageWidth = image.size.width;
// 原图高
CGFloat imageHeight = image.size.height; // 缩放比例
CGFloat widthScale = imageWidth /size.width;
CGFloat heightScale = imageHeight /size.height; // 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(CGSizeMake(size.width, size.height)); // 横屏图片
if (widthScale > heightScale) {
[image drawInRect:CGRectMake(, , imageWidth /heightScale , size.height)];
}
else { // 竖屏图片
[image drawInRect:CGRectMake(, , size.width , imageHeight /widthScale)];
} // 从当前context中创建一个改变大小后的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 使当前的context出堆栈
UIGraphicsEndImageContext(); return newImage; }