首先 我们在做图盘上传的 时候 都会遇到 图片太大 压缩的问题 记录一下 采用content 上下文 图片 压缩
首先是 swift的 (我是写在image的 类别里面的 )*** 此处的压缩 指的是分辨率 并不是图片的实际尺寸 新手可能分不清
/// 创建矩形图像
///
/// - Parameters:
/// - size: 尺寸
/// - backColor: 背景色(默认`white`)
/// - lineColor: 线的颜色(默认`lightGray`)
/// - Returns: 裁切后的图像
publicfunchq_rectImage(size:CGSize?, backColor:UIColor=UIColor.white, lineColor:UIColor=UIColor.lightGray) ->UIImage? {
varsize = size
ifsize ==nil{
size =self.size
}
letrect =CGRect(origin:CGPoint(), size: size!)
// 1.图像的上下文-内存中开辟一个地址,跟屏幕无关
/**
* 1.绘图的尺寸
* 2.不透明:false(透明) / true(不透明)
* 3.scale:屏幕分辨率,默认情况下生成的图像使用'1.0'的分辨率,图像质量不好
* 可以指定'0',会选择当前设备的屏幕分辨率
*/
UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
// 2.绘图'drawInRect'就是在指定区域内拉伸屏幕
// 背景填充(在裁切之前做填充)
backColor.setFill()
UIRectFill(rect)
draw(in: rect)
// 3.取得结果
let result = UIGraphicsGetImageFromCurrentImageContext()
// 4.关闭上下文
UIGraphicsEndImageContext()
// 5.返回结果
returnresult
}
OC 版本的
- (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
网友评论