如何将图像裁剪为 3:4?迅速

3 image crop uikit swift swift5

我尝试在网上查找答案,但没有找到,也许我在网上输入的查询有误。

你能告诉我如何裁剪 3:4 的照片吗?我找不到裁剪它的功能。请分享?

小智 5

您可以使用此功能以任何纵横比(例如 3:4)裁剪图像。您必须将您的Image和所需的AspectRatio作为参数传递给函数,它将返回您裁剪后的图像。

func crop(image: UIImage, to aspectRatio: CGFloat) -> UIImage {

    let originalAspectRatio = image.size.height/image.size.width

    var newImagesize = image.size

    if originalAspectRatio > aspectRatio {
        newImagesize.height = image.size.width * aspectRatio
    } else if originalAspectRatio < aspectRatio {
        newImagesize.width = image.size.height / aspectRatio
    } else {
        return image
    }

    let center = CGPoint(x: image.size.width/2, y: image.size.height/2)
    let origin = CGPoint(x: center.x - newImagesize.width/2, y: center.y - newImagesize.height/2)

    let cgCroppedImage = image.cgImage!.cropping(to: CGRect(origin: origin, size: CGSize(width: newImagesize.width, height: newImagesize.height)))!
    let croppedImage = UIImage(cgImage: cgCroppedImage, scale: image.scale, orientation: image.imageOrientation)

    return croppedImage
}
Run Code Online (Sandbox Code Playgroud)

用法:

 let croppedImage = crop(image: "ImageName", to: 3/4)
Run Code Online (Sandbox Code Playgroud)