当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS 图片裁剪 + 旋转

iOS 图片裁剪 + 旋转

2019年07月24日  | 移动技术网移动技术  | 我要评论

之前分别介绍了图片裁剪和图片旋转方法

《ios 图片裁剪方法》

地址:

《ios 图片旋转方法》

地址:

裁剪和旋转是可以连在一起执行的。先定位到需要裁剪的区域,然后以此区域的中心为轴,旋转一定角度,最后获取旋转后此区域内的图片。可以用位图(bitmap)绘制实现

static func cropimage(_ image: uiimage, withrect rect: cgrect, angle: double) -> uiimage? {
 // creates a bitmap-based graphics context with rect size
 // and makes it the current context
 uigraphicsbeginimagecontext(rect.size)
 // get current graphics context
 guard let context = uigraphicsgetcurrentcontext() else { return nil }
 // move context origin to rect center
 context.translateby(x: rect.width / 2, y: rect.height / 2)
 // convert angle to radian and rotate
 context.rotate(by: cgfloat(angle / 180 * m_pi))
 // move context origin back (-rect.width / 2, -rect.height / 2)
 // and move opposite direction of rect origin (-rect.minx, -rect.miny)
 context.translateby(x: -rect.width / 2 - rect.minx, y: -rect.height / 2 - rect.miny)
 // draw image at context origin
 image.draw(at: .zero)
 // get image
 let finalimage = uigraphicsgetimagefromcurrentimagecontext()
 // removes the current bitmap-based graphics context from the top of the stack
 uigraphicsendimagecontext()
 // return image
 return finalimage
}

rect为需要裁剪的区域,采用原图的坐标系。angle为需要旋转的角度,单位是度,正值表示图片顺时针方向旋转。具体实现的讲解见注释。

最后的图片可能超出原图区域,超出部分为透明。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持移动技术网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网