从UIImageView中提取书面区域

时间:2017-06-19 04:17:06

标签: swift3 uiimageview

所以我有UIImageView,我用它来写用户的签名。 UIImageView占用整个屏幕,方便用户附加签名。

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

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

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

1 个答案:

答案 0 :(得分:0)

最后,我找到了自己的方法。我所做的是我注意到CGPoint中左边的两个touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)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 } } 中的右边点,以下方法用于更新leftPoint和rightPoint

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)

裁剪图像
  ClientRequest.Headers["Content-type"] = "application/json";
            string result = ClientRequest.DownloadString(ServiceHostName + "/NajaService.svc/GetCarData/" + plaque);

            var javascriptserializer = new JavaScriptSerializer();
            return javascriptserializer.Deserialize<NajaResult>(result);

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