我一直在搜索谷歌,并且只会遇到减少高度/宽度的库或者通过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")
}
Run Code Online (Sandbox Code Playgroud)
它正在发送12MB的照片.我怎样才能减少到1mb?谢谢!
在Mail中,当我添加图像并尝试发送它时,它会快速询问我要将图像发送到哪个尺寸.看截图:

我想在应用程序中做类似的事情,我将上传图像并希望用户在上传图像之前调整图像大小.苹果在这里估算文件大小的最佳方法是什么?
似乎实际创建每个已调整大小的图像需要花费太长时间才能检查它们的大小.有没有更好的办法?
我确实发现这个Apple示例代码有点帮助,但说实话有点压倒性.:)
如果我在保存图像之前使用它是正常的.但如果我保存它并使用它以后是90度转动.我怎样才能确保它不会横向保存?
func saveEvent(_ center1: CLLocation, title2: String, imagePicked1: UIImage)
{
let data = UIImagePNGRepresentation(imagePicked1);///
let url = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(NSUUID().uuidString+".dat")
do {
try data!.write(to: url!, options: [])
} catch let e as NSError {
print("Error! \(e)");
return
}
let image11 = CKAsset(fileURL: url!)
self.eventRecord.setObject(image11 as CKAsset, forKey: "Picture")
let publicData = CKContainer.default().publicCloudDatabase
publicData.save(self.eventRecord, completionHandler: { record, error in
if error == nil
{
print("Image saved")
}else{
print(error!)
}
})
}
Run Code Online (Sandbox Code Playgroud) 我在上传它们之前尽可能地减少图像的文件大小.现在我这样做:
if let firstImageData = UIImageJPEGRepresentation(pickedImage, 0.1) {
self.imgArray.append(firstImageData)
}
Run Code Online (Sandbox Code Playgroud)
这将拍摄来自相机或相册的任何图像,使其成为jpg并缩小其尺寸.
我已将设置设置为0.1但是当我上传图像时,大小仍然大约为300-350kb,有没有什么方法可以调整它们的大小,我的目标是50-70kb
我想缩小此网站 http://resizeimage.net的 图像大小,在使用下面的代码后,我的图像大小为1080 x 360,大小为120kb,但是当我使用该网站时,我的图像大小为58kb,或者有一个库或算法可以压缩JPEG文件
func resizeImage(_ image: UIImage, newHeight: CGFloat) -> UIImage {
let scale = newHeight / image.size.height
let newWidth = image.size.width * scale
UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))
image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
let imageData = UIImageJPEGRepresentation(newImage!, 0.5)! as Data
UIGraphicsEndImageContext()
return UIImage(data:imageData)!
}
Run Code Online (Sandbox Code Playgroud)