在开发app的过程中,某个空间需要加载相册中的图片,而相册中的图片都是高清图片,动辄十几M的大小,这样添加过多的图片后,会导致内存剧增,影响app的使用.
这里解决的办法就是通过重绘图片的frame,原始图片的高度h1,宽度w1,再定义自己想要得到的图片的宽度w2,通过h1 * w2 / w1来计算程序员自己想要得到的图片的高度,然后通过获取图片上下文的方式,重新返回一个UIImage,给控件赋值的时候用重绘后的UIImage就能解决该问题了
这里分享一个免费的裁剪图片的神网站,裁剪完不影响分辨率
https://tinypng.com
//解决内存问题
func getScaleImage(width: CGFloat) -> UIImage {
if self.size.width <= width {
return self
}else {
let height = (self.size.height * width)/self.size.width
let rect = CGRect(x: 0, y: 0, width: width, height: height)
UIGraphicsBeginImageContext(rect.size)
self.drawInRect(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
网友评论