【发布时间】:2020-06-22 08:55:16
【问题描述】:
这是我要裁剪的图像(去掉底部的选项。Back、Draw 和 Delete 是实际的菜单项,它上面的那些是图像的一部分
这是改变 y: 100 和 height : 1948 的结果
我想删除图像的后 100 个坐标。我的应用程序在 iPad 上,所有图像都是水平保存的。 这段代码是我在类似问题上从堆栈溢出中获取的代码,但是它不适用于 x、y、width 和 height 的任何值。图像永远不会从底部裁剪。 更改值往往只会从左右裁剪图像(iPad 的 1536 像素部分,而不是 2048)
func cropImage(image: UIImage) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: 1536, height: 2048) // 1536 x 2048 pixels
let cgImage = image.cgImage!
let croppedCGImage = cgImage.cropping(to: rect)
return UIImage(cgImage: croppedCGImage!)
}
有人知道缺少什么吗?我只需要它来裁剪底部,因为图像是前一个视图的保存(但是菜单选项出现在底部的 aa=stack 视图中,当我保存图像时它仍然存在,因此裁剪。谢谢
【问题讨论】:
-
注意:我已经尝试更改 CGRect 中的每个元素,但是每个元素都会保留底部像素
-
你能展示你的原始图像和你的裁剪尝试的结果吗? developer.apple.com/documentation/coregraphics/cgimage/… 此处的文档表明您的代码是正确的。
-
另外,你能把
print(image.size)和print(image.scale)的结果显示出来吗,谢谢。 -
我正在使用的一个折衷方案(虽然一点也不好)是:将 CGRect 设置为:let height = CGFloat(image.size.height - 800)。 let rect = CGRect(x: 0, y: height - 150, width: image.size.width - 150, height: height)
-
@mcgeevej - 您发布的 “我希望裁剪的图像” 图像是
2048 x 1536像素...如果您想裁剪 “底部 100 像素" 你的裁剪矩形应该是CGRect(x: 0, y: 0, width: 2048, height: 1536 - 100)。不过,您的代码似乎是在图像(视图)上绘图似乎很奇怪,但您要裁剪的图像是屏幕截图?
标签: ios swift xcode uiimage crop