就是根据需要按照原来的样子重绘图片
上代码:xcode 7.3.1
/**
保持图片比例根据设置的大小重绘图片 更改图片内存大小并不改变图片样子
- parameter image: 要修改的图片
- parameter maxDimension: 包含图片的矩形区域最长的边长
- returns: 缩放后的图片
注:这边利用图片放大缩小其宽高比是不变的 来重绘图形
*/
func scaleImage(image:UIImage,maxDimension:CGFloat) -> UIImage{
/// 预设正方形区域 下面会根据图片大小调整
var scaleSize:CGSize = CGSize.init(width: maxDimension, height: maxDimension)
/// 图片短边与长边的比例
var scaleFactor:CGFloat = 0
/// 原图的长宽
let imageW = image.size.width
let imageH = image.size.height
if imageW > imageH
{//宽大于高的情况
//1.高宽比
scaleFactor = imageH / imageW
//2.将长的一边设为划定区域的边长
scaleSize.width = maxDimension
//3.利用高宽比不变的原理 求出较短的边的长度
scaleSize.height = scaleFactor * maxDimension
}
else
{
//宽小于高
//原理同上
scaleFactor = imageW / imageH
scaleSize.height = maxDimension
scaleSize.width = maxDimension * scaleFactor
}
//获取上下文环境
UIGraphicsBeginImageContext(scaleSize)
//重绘图片区域
image.drawInRect(CGRect.init(x: 0, y: 0, width: scaleSize.width, height: scaleSize.height))
//获取新图片
let scaleImage = UIGraphicsGetImageFromCurrentImageContext()
//关闭上下文
UIGraphicsEndImageContext()
return scaleImage
}