在我正在开发的应用程序中,客户输入一些个人信息并在屏幕上的一个框中签名。然后我以编程方式截取完整 View 并将其转换为 base64。
这工作正常,但是,由于图像的大小,将其转换为 base64 并将其发送到 API 服务器大约需要 15 秒。全画质图像大小与 iPad Air 分辨率 (1536x2048) 相同。
在服务器上保存为 PNG 后,图像的重量约为 410kb。
我想在不损失清晰度的情况下将图像捕获的大小调整为 768x1024(它的一半)。我认为这将节省时间和存储空间。
我目前正在使用以下功能截取“屏幕截图”:
func screenCaptureAndGo() {
//Create the UIImage
UIGraphicsBeginImageContextWithOptions(view.frame.size, view.opaque, 0.0)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
imageData = UIImagePNGRepresentation(image)
imageDataString = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
}
我省略了 API 服务器的内容,因为它不是很相关。
最佳答案
我最终只使用了 Scale 属性。第一次没有用,这就是为什么我不想再次使用它,但在玩弄它之后我让它工作了。
我使用 0.7 作为缩放量,图像现在以 100kb 计时,转换和发送 base64 字符串需要 4 秒。
关于ios - 调整使用 UIGraphicsBeginImageContextWithOptions 截取的屏幕截图的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674988/