簡體   English   中英

將UIImage裁剪為方形部分

[英]Crop UIImage to square portion

我有一個包含UIImage的UIScrollView。 最重要的是用戶可以移動圖像的框,以便裁剪該部分。

這個截圖更好地解釋了它:

在此輸入圖像描述

因此,他們可以滾動圖像,直到他們想要的部分在該框內。

然后,我希望能夠將scrollView / UIImage裁剪為完全相同的大小並存儲裁剪后的圖像。

它應該不是很難,但我花了很多年時間嘗試截圖,UIGraphicsContext等等,似乎無法使用任何東西。

謝謝您的幫助。

我終於想出了如何讓它發揮作用。 這是代碼:

func croppedImage() -> UIImage {

    let cropSize = CGSize(width: 280, height: 280)
    let scale = (imageView.image?.size.height)! / imageView.frame.height
    let cropSizeScaled = CGSize(width: cropSize.width * scale, height: cropSize.height * scale)

    if #available(iOS 10.0, *) {
        let r = UIGraphicsImageRenderer(size: cropSizeScaled)
        let x = -scrollView.contentOffset.x * scale
        let y = -scrollView.contentOffset.y * scale
        return r.image { _ in
            imageView.image!.draw(at: CGPoint(x: x, y: y))
        }
    } else {
        return UIImage()
    }

}

所以它首先計算imageView和實際圖像的比例。

然后它會創建該裁剪框的CGSize,如照片所示。 但是,寬度和高度必須按比例因子縮放。 (例如280 * 6.5)

您必須檢查手機是否正在運行iOS 10.0 for UIGraphicsImageRender - 如果沒有,它將無法正常工作。

使用裁剪框大小初始化此選項。

然后必須偏移圖像,這是通過獲取scrollView的內容偏移,否定它並乘以比例因子來計算的。

然后返回那時繪制的圖像!

暫無
暫無

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

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