簡體   English   中英

如何裁剪給定的圖像視圖

[英]How to crop image view given a rect

我想在uiimagepickercontrollers overlayView上顯示裁剪視圖,然后相對於overlayImage rect裁剪圖像。 給定overlayView的矩形,如何計算裁剪圖像?

private func CropImage( image:UIImage , cropRect:CGRect) -> UIImage
{
    UIGraphicsBeginImageContextWithOptions(cropRect.size, false, 0);
    let context = UIGraphicsGetCurrentContext();

    context?.translateBy(x: 0.0, y: image.size.height);
    context?.scaleBy(x: 1.0, y: -1.0);
    context?.draw(image.cgImage!, in: CGRect(x:0, y:0, width:image.size.width, height:image.size.height), byTiling: false);
    context?.clip(to: [cropRect]);

    let croppedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return croppedImage!;
}

您可以使用下面的代碼塊來實現。

let imageRef:CGImage = uncroppedImage.cgImage!.cropping(to: bounds)!
let croppedImage:UIImage = UIImage(cgImage: imageRef)

在這里,您可以根據自己的要求通過您的矩形。

您也可以按照蘋果的建議進行操作。

請找到官方文檔。

func cropImage(_ inputImage: UIImage, toRect cropRect: CGRect, viewWidth: CGFloat, viewHeight: CGFloat) -> UIImage? 
{    
    let imageViewScale = max(inputImage.size.width / viewWidth,
                             inputImage.size.height / viewHeight)

    // Scale cropRect to handle images larger than shown-on-screen size
    let cropZone = CGRect(x:cropRect.origin.x * imageViewScale,
                          y:cropRect.origin.y * imageViewScale,
                          width:cropRect.size.width * imageViewScale,
                          height:cropRect.size.height * imageViewScale)

    // Perform cropping in Core Graphics
    guard let cutImageRef: CGImage = inputImage.cgImage?.cropping(to:cropZone)
    else {
        return nil
    }

    // Return image to UIImage
    let croppedImage: UIImage = UIImage(cgImage: cutImageRef)
    return croppedImage
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM