绘制带有比例和平移的 UIImage
Draw UIImage with scale and translate
我正在尝试绘制 UIImage 的“放大”部分,但找不到方法...
假设我有一个尺寸为 1000x1000 的图像,我放大到左上角(x:0,y:0 宽度:500,高度:500),我想将该部分绘制到另一个1000x1000 图片。
我正在使用 UIGraphicsImageRenderer
但 UIImage draw
方法不接受任何 source 矩形,只接受目标 rect(并且它绘制整个图像) .
我能够通过在 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 canvas 的 drawImage
API 的东西,它同时获得 src 和 dst 矩形...
谢谢。
使用此答案的 UIImage
扩展名:
如果我对你的问题的理解正确——你想从 1000x1000 的图像中剪切 top-left 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()
}
}
}
我正在尝试绘制 UIImage 的“放大”部分,但找不到方法...
假设我有一个尺寸为 1000x1000 的图像,我放大到左上角(x:0,y:0 宽度:500,高度:500),我想将该部分绘制到另一个1000x1000 图片。
我正在使用 UIGraphicsImageRenderer
但 UIImage draw
方法不接受任何 source 矩形,只接受目标 rect(并且它绘制整个图像) .
我能够通过在 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 canvas 的 drawImage
API 的东西,它同时获得 src 和 dst 矩形...
谢谢。
使用此答案的 UIImage
扩展名:
如果我对你的问题的理解正确——你想从 1000x1000 的图像中剪切 top-left 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()
}
}
}