iOS:以字节为单位的 UIImage 大小与实际图像大小不同

问题描述

我正在尝试获取 UIImage 的字节大小。问题是我的实际图像是 5MB,当我使用

let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
let imgData = NSData(data: image.jpegData(compressionQuality: 1)!)
var imageSize: Int = imgData.count
print("actual size of image in KB: %f ",Double(imageSize) / 1000.0)   

我只有 2MB。任何人都可以请教我。

解决方法

这一行不是重新压缩图像吗?

    let imgData = NSData(data: image.jpegData(compressionQuality: 1)!)

如果是这样,我肯定希望生成的图像比原始图像小。

,

这对我有用而不是 UIImage().jpegdata

  public func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [String : Any]) {
    var asset: PHAsset!
    if #available(iOS 11.0,*) {
      asset = info[UIImagePickerControllerPHAsset] as? PHAsset
    } else {
      if let url = info[UIImagePickerControllerReferenceURL] as? URL {
        asset = PHAsset.fetchAssets(withALAssetURLs: [url],options: .none).firstObject!
      }
    }

    if #available(iOS 13,*) {
      PHImageManager.default().requestImageDataAndOrientation(for: asset,options: .none) { data,string,orien,info in
        let imgData = NSData(data:data!)
        var imageSize: Int = imgData.count
        print("actual size of image in KB: %f ",Double(imageSize) / 1024.0)
      }
    } else {
      PHImageManager.default().requestImageData(for: asset,orientation,Double(imageSize) / 1024.0)
      }
    }
  }