簡體   English   中英

使用縮放和平移繪制 UIImage

[英]Draw UIImage with scale and translate

我正在嘗試繪制 UIImage 的“放大”部分,但找不到方法來做到這一點......

假設我有一個大小為 1000x1000 的圖像,我放大到左上角(x:0,y:0 寬度:500,高度:500),我想將該部分繪制到另一個 1000x1000 圖像中。

我正在使用UIGraphicsImageRenderer但 UIImage draw方法不接受任何源矩形,只接受目標矩形(並且它繪制整個圖像)。

我能夠通過在draw方法中指定更大的矩形來實現我想要的,但是當放大級別很大(內存不足)時會崩潰。

這是我嘗試過的:

let srcImg: UIImage = {some UIImage sized 1000x1000}
let renderer = UIGraphicsImageRenderer(size: CGSize(width: 1000, height: 1000))
let scaled = renderer.image { ctx in
    srcImg.draw(in: CGRect(origin: CGPoint.zero, size: CGSize(width: 2000, height: 2000)))
}

基本上我試圖實現類似 HTML5 畫布的drawImage API 的東西,它同時獲得 src 和 dst 矩形......

謝謝。

使用此答案中的UIImage擴展: https : //stackoverflow.com/a/28513086/6257435

如果我正確理解您的問題——您想從 1000x1000 圖像中剪下左上角的 500x500 像素,並將其縮放到 1000x1000——這是一個使用該擴展的簡單示例:

    if let img1000x1000 = UIImage(named: "img1000x1000") {
        if let topLeft500x500 = img1000x1000.cropped(to: CGRect(x: 0, y: 0, width: 500, height: 500)) {
            if let new1000x1000 = topLeft500x500.filled(to: CGSize(width: 1000, height: 1000)) {
                // do something with new 1000x1000 image
                print()
            }
        }
    }

暫無
暫無

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

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