iOS 图片裁剪 + 旋转
程序员文章站
2024-02-14 16:48:04
之前分别介绍了图片裁剪和图片旋转方法
《ios 图片裁剪方法》
地址:
《ios 图片旋转方法》
地址:
裁剪和旋转是可以连在一起执行的。先定位到需要裁剪的区域,...
之前分别介绍了图片裁剪和图片旋转方法
《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为需要旋转的角度,单位是度,正值表示图片顺时针方向旋转。具体实现的讲解见注释。
最后的图片可能超出原图区域,超出部分为透明。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!