【问题标题】:Swift cropping an image to remove bottom part快速裁剪图​​像以删除底部
【发布时间】: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


【解决方案1】:

您发布的“我希望裁剪的图像”图像为 2048 x 1536 像素...

如果你想裁剪“底部 100 像素”,你的裁剪矩形应该是

CGRect(x: 0, y: 0, width: 2048, height: 1536 - 100)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2016-12-03
    • 2022-10-23
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多