用比例绘制 UIImage 并平移
Posted
技术标签:
【中文标题】用比例绘制 UIImage 并平移【英文标题】:Draw UIImage with scale and translate 【发布时间】:2020-09-13 19:12:14 【问题描述】:我正在尝试绘制 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 矩形...
谢谢。
【问题讨论】:
【参考方案1】:使用此答案中的UIImage
扩展名:https://***.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()
【讨论】:
以上是关于用比例绘制 UIImage 并平移的主要内容,如果未能解决你的问题,请参考以下文章