gpt4 book ai didi

ios - 如何调整 UIImage 的大小以减小上传图片的大小

转载 作者:IT王子 更新时间:2023-10-29 04:58:13 27 4
gpt4 key购买 nike

我一直在谷歌搜索,只遇到了一些库,这些库要么降低高度/宽度,要么通过 CoreImage 编辑 UIImage 外观。但我还没有看到或找到一个库,帖子解释了如何减小图像大小,以便在上传时,它不是完整的图像大小。

到目前为止我有这个:

        if image != nil {
//let data = NSData(data: UIImagePNGRepresentation(image))
let data = UIImagePNGRepresentation(image)
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"image\"; filename=\"randomName\"\r\n")
body.appendString("Content-Type: image/png\r\n\r\n")
body.appendData(data)
body.appendString("\r\n")
}

它正在发送 12MB 的照片。我怎样才能将它减少到 1mb?谢谢!

最佳答案

Xcode 9 • Swift 4 或更高版本

编辑/更新:对于iOS10+我们可以使用UIGraphicsImageRenderer .对于旧的 Swift 语法检查编辑历史。

extension UIImage {
func resized(withPercentage percentage: CGFloat, isOpaque: Bool = true) -> UIImage? {
let canvas = CGSize(width: size.width * percentage, height: size.height * percentage)
let format = imageRendererFormat
format.opaque = isOpaque
return UIGraphicsImageRenderer(size: canvas, format: format).image {
_ in draw(in: CGRect(origin: .zero, size: canvas))
}
}
func resized(toWidth width: CGFloat, isOpaque: Bool = true) -> UIImage? {
let canvas = CGSize(width: width, height: CGFloat(ceil(width/size.width * size.height)))
let format = imageRendererFormat
format.opaque = isOpaque
return UIGraphicsImageRenderer(size: canvas, format: format).image {
_ in draw(in: CGRect(origin: .zero, size: canvas))
}
}
}

用法:

let image = UIImage(data: try! Data(contentsOf: URL(string:"http://i.stack.imgur.com/Xs4RX.jpg")!))!

let thumb1 = image.resized(withPercentage: 0.1)
let thumb2 = image.resized(toWidth: 72.0)

关于ios - 如何调整 UIImage 的大小以减小上传图片的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com