从 UIImageView 中提取书写区域

Posted

技术标签:

【中文标题】从 UIImageView 中提取书写区域【英文标题】:Extract written area from the UIImageView 【发布时间】:2017-06-19 04:17:06 【问题描述】:

所以我有 UIImageView 供用户编写签名。 UIImageView 在附加他的签名时占据了整个屏幕,以方便用户使用。

我可以通过UIImageView.image 获取并保存图像,但是当我检查保存的图像时,它有很多空白!签名很小,不会占据设备的整个屏幕,但保存的图像会占据设备的整个屏幕,包括没有书写/签名的区域。

有没有办法至少将图像裁剪/修剪到有签名的区域?

更新: 如果您查看下面的示例,您会注意到签名周围的区域。显示时我无法调整图像本身的大小,因为它会使签名更小更难阅读

【问题讨论】:

【参考方案1】:

最后,我自己找到了方法。我所做的是我注意到touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)中的两个CGPointleftPoint和rightPoint,下面的方法是用来更新leftPoint和rightPoint

func updatePoints(currentPoint: CGPoint)
    if leftPoint.x > currentPoint.x 
        leftPoint.x = currentPoint.x
    
    if leftPoint.y > currentPoint.y 
        leftPoint.y = currentPoint.y
    

    if rightPoint.x < currentPoint.x 
        rightPoint.x = currentPoint.x
    
    if rightPoint.y < currentPoint.y 
        rightPoint.y = currentPoint.y
    

当最终要保存签名时。我根据上述点计算图像的宽度和高度,然后使用CGRect() 裁剪图像

let width = rightPoint.x - leftPoint.x
let height = rightPoint.y - leftPoint.y
let rect = CGRect(x: leftPoint.x, y: leftPoint.y, width: width, height: height)
let croppedImage = imageView.image!.cropRect(rect)

如果您有其他想法,请告诉我!现在我将使用它。谢谢

【讨论】:

以上是关于从 UIImageView 中提取书写区域的主要内容,如果未能解决你的问题,请参考以下文章

IOS:用 UIImageView 填充 NSArray

ios - Uitableviewcell 中的 Uilabel 和 UIimageview

获取uiimageview下的uiview部分?

用 UIImageView 替换 UIRefreshControl

Xcode - 用户选择后图像未出现在 UIImageView 中

在具有透明度的 UITableView 单元格中更新 UIImageView