在iOS开发中,经常需要对图像经常优化处理,免得影响性能。下面记录怎么绘制新的图片解决图像拉伸问题。
1 获取绘图上下文
- /** 1.取绘图上下文
- * size: 需要绘制的目标图片大小
- * opaque : bool值,指定TRUE,则表示忽略alpha通道并优化位图的存储,FALSE,表示每个像素使用一个premultipled ARGB格式
- * scale : 应用于位图的比例因子。如果指定值为0,则缩放因子设置为设备主屏幕的比例因子。
- */
- UIGraphicsBeginImageContextWithOptions(rect.size,true,0)
2 指定区域内绘制拉伸图片
- origalImage.draw(in: rect)
3 获取绘制的图片
- let stretchImage = UIGraphicsGetImageFromCurrentImageContext()
4 关闭绘图上下文
- UIGraphicsEndImageContext()
5 返回绘制好的图片
- return stretchImage!
6 完整代码示例
- /// 拉伸图片
- ///
- /// - parameter origalImage: 需要被拉伸的图片
- /// - parameter destinationSize: 拉伸的目标大小
- ///
- /// - returns: 重新绘制好的拉伸图片
- func stretchingImage(origalImage:UIImage,destinationSize:CGSize) -> UIImage{
- let rect = CGRect(origin: CGPoint(),size: destinationSize)
- /** 1.取绘图上下文
- * size: 需要绘制的目标图片大小
- * opaque : bool值,指定TRUE,则表示忽略alpha通道并优化位图的存储,FALSE,表示每个像素使用一个premultipled ARGB格式
- * scale : 应用于位图的比例因子。如果指定值为0,则缩放因子设置为设备主屏幕的比例因子。
- */
- UIGraphicsBeginImageContextWithOptions(rect.size,0)
- /** 2.指定区域内绘制拉伸图片
- *
- */
- origalImage.draw(in: rect)
- /** 3.获取绘制的图片
- *
- */
- let stretchImage = UIGraphicsGetImageFromCurrentImageContext()
- /** 4关闭绘图上下文
- *
- */
- UIGraphicsEndImageContext()
- /** 5.返回绘制好的图片
- *
- */
- return stretchImage!
- }