[英]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.