当前位置: 首页 > 面试题库 >

在以PFFile格式上传到Parse之前如何压缩图像的大小?(迅速)

林冥夜
2023-03-14
问题内容

直接在手机上拍照后,我试图将图像文件上传到Parse。但这会引发异常:

由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“ PFFile不能大于10485760字节”

这是我的代码:

在第一视图控制器中:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if (segue.identifier == "getImage")
    {
        var svc = segue.destinationViewController as! ClothesDetail
        svc.imagePassed = imageView.image
    }
}

在上传图像的视图控制器中:

let imageData = UIImagePNGRepresentation(imagePassed)
let imageFile = PFFile(name: "\(picName).png", data: imageData)

var userpic = PFObject(className:"UserPic")
userpic["picImage"] = imageFile`

但是我仍然需要将照片上传到Parse。有什么方法可以减小图像的尺寸或分辨率?


问题答案:

是的,你可以使用UIImageJPEGRepresentation,而不是UIImagePNGRepresentation减少图像文件的大小。您可以按照以下方式创建扩展UIImage:

Xcode 8.2•Swift 3.0.2

extension UIImage {
    enum JPEGQuality: CGFloat {
        case lowest  = 0
        case low     = 0.25
        case medium  = 0.5
        case high    = 0.75
        case highest = 1
    }

    /// Returns the data for the specified image in JPEG format.
    /// If the image object’s underlying image data has been purged, calling this function forces that data to be reloaded into memory.
    /// - returns: A data object containing the JPEG data, or nil if there was a problem generating the data. This function may return nil if the image has no data or if the underlying CGImageRef contains data in an unsupported bitmap format.
    func jpeg(_ quality: JPEGQuality) -> Data? {
        return UIImageJPEGRepresentation(self, quality.rawValue)
    }
}

编辑/更新:

Xcode 10 Swift 4.2

extension UIImage {
    enum JPEGQuality: CGFloat {
        case lowest  = 0
        case low     = 0.25
        case medium  = 0.5
        case high    = 0.75
        case highest = 1
    }

    /// Returns the data for the specified image in JPEG format.
    /// If the image object’s underlying image data has been purged, calling this function forces that data to be reloaded into memory.
    /// - returns: A data object containing the JPEG data, or nil if there was a problem generating the data. This function may return nil if the image has no data or if the underlying CGImageRef contains data in an unsupported bitmap format.
    func jpeg(_ jpegQuality: JPEGQuality) -> Data? {
        return jpegData(compressionQuality: jpegQuality.rawValue)
    }
}

用法:

if let imageData = image.jpeg(.lowest) {
    print(imageData.count)
}


 类似资料:
  • 我正在开发应用程序,用户必须上传多个图像。现在我面临的问题是他们的规模。由于用户可以上传多个图像,这需要大量的时间来通过应用程序上传它们,因为它们太大了,用户不喜欢,也使我的应用程序和数据库沉重。你能指导我如何在上传多张图片到firebase之前压缩它们吗? 用于压缩图像的代码 模特班 } 引发异常

  • 我想在上传到Firebase存储之前减小图像文件大小,因为上传需要很长时间。 这是conatins编辑文本图像视图的表单 单击“保存”按钮时,我同时保存数据(在实时数据库中)和图像(存储)。 那么如何减少图像大小或压缩它呢??

  • 在上传到服务器之前,我使用了下面的方法来压缩图像。 为了总结下面的代码,我首先从phone/sdcard上获取图像,将其转换为位图,并对位图进行缩放和压缩。然后我将压缩后的位图保存在磁盘上,作为新位置的图像。 这种方法可以将图像从3mb-5mb压缩到30-100kb。(当我检查SD卡上的压缩图像大小时) 然后,我将新压缩的30-100kb图像转换为位图字符串(通过Base64.encodeToSt

  • 我制作了一个用于图像和视频共享的社交应用程序。但是,加载图像需要花费太多时间。我正在使用glide图书馆。请告诉我如何在图像质量没有明显变化的情况下(如Instagram)缩小从gallery中拾取的图像的大小,然后将其上载到firebase存储。请帮忙!

  • 问题内容: 我一直在搜索google,只遇到过降低高度/宽度或通过CoreImage如何编辑UIImage外观的库。但是我还没有看到或找到一个库,这篇文章解释了如何减小图像大小,因此在上载时,它不是完整的图像大小。 到目前为止,我有这个: 并且正在发送12MB的照片。如何将其减小到1mb?谢谢! 问题答案: Xcode 9•Swift 4或更高版本 编辑/更新:对于iOS10 +,我们可以使用UI

  • 我想上传图像到服务器。将我的图像转换为位图,但仍然出错。位图太大,无法上传到纹理中 如果我得到图片使用画廊意味着我得到错误的位图太大,不能上传到纹理 如果我得到图片使用相机意味着得到错误的 造成:java.lang.安全例外:权限拒绝:阅读<-plhd--1/>MediaProvider uri内容://media/外部/图像/媒体从pid=18253,uid=10257需要android.per