ios - 调整使用 UIGraphicsBeginImageContextWithOptions 截取的屏幕截图的大小

标签 ios swift uiimage image-resizing

在我正在开发的应用程序中,客户输入一些个人信息并在屏幕上的一个框中签名。然后我以编程方式截取完整 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/

相关文章:

swift - FirebaseUI 不显示任何输入字段或按钮

ios - NSData 和 UIImage

ios - 从 ALAssetsLibrary 返回 UIImages 的 NSArray

ios - 'Supporting Files' 文件夹是否会增加启动时间/CPU 消耗?

ios - 缺少所需的架构 arm64

ios - 尾部截断不适用于自定义 Xamarin.iOS TableView 单元格

iphone - 分布式构建上的 iOS 远程调试

ios - AVFoundation 错误代码

ios - 使用 Swift 对日语字符进行排序

c++ - 是否有一个 API 可以在 iOS 上运行以更改现有视频的每秒帧数?