-2

我在代码中获取图像大小时遇到​​了一些问题,这就是我正在做的事情:

let imageData : NSData = UIImageJPEGRepresentation(images[0], 1) as! NSData 
let formatter = ByteCountFormatter() 
formatter.allowedUnits = .useKB 
formatter.countStyle = .binary 
let imageSize = formatter.string(fromByteCount: Int64(imageData.length))
print(imageSize)
4

3 回答 3

1

在这里您可以获取图像大小

  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            var Size = Float()
            var data = Data()
            btnCancel.isUserInteractionEnabled = true

            if let mediaType = info[UIImagePickerControllerMediaType] as? String {

                if mediaType  == "public.image" {
                    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
                        data = UIImageJPEGRepresentation(pickedImage, 1.0)!
                      //Here you get MB size
                        Size = Float(Double(data.count)/1024/1024)

                      //For Kb just remove single 1024 from size 

                      // I am checking 5 MB size here you check as you want
                        if Size <= 5.00{
                            // Here your image
                        }  
                    }
                }
                else
                if mediaType == "public.movie" {
                    let videoURL = info[UIImagePickerControllerMediaURL] as? URL
                    data = try! Data.init(contentsOf: videoURL!)
                    Size = Float(Double(data.count)/1024/1024)
                    if Size <= 5.00{
                        //your video here
                    }
                }
            }
            picker.dismiss(animated: true) {
                if Size > 5.0{
                    Utilities.showAlertView(title: "title", message: "message")
                }
            }
        }

        func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
            picker.dismiss(animated: true, completion: nil)
        }
于 2018-04-17T11:47:51.980 回答
0

尝试此代码,以在从选取器视图获取图像时获取图像大小。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        dismiss(animated: true, completion: nil);

        let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
        //get the size of image
        let imgData: NSData = NSData(data: UIImageJPEGRepresentation((chosenImage), 1)!)
        let imageSize: Int = imgData.length
        print("size of image in MB: %f ", Double(imageSize) / 1024.0/1024.0)
    }
于 2018-04-17T12:30:33.923 回答
0

您可以通过以下UIImage扩展名简单地检查以 KB 为单位的大小:

extension UIImage {
    func logImageSizeInKB(scale: CGFloat) -> (Int, Data) {
        let data = UIImageJPEGRepresentation(self, scale)!
        let formatter = ByteCountFormatter()
        formatter.allowedUnits = ByteCountFormatter.Units.useKB
        formatter.countStyle = ByteCountFormatter.CountStyle.file
        let imageSize = formatter.string(fromByteCount: Int64(data.count))
        print("ImageSize(KB): \(imageSize)")

        return (Int(Int64(data.count) / 1024), data)
    }
}

笔记:

也可以UIImagePNGRepresentation用于 png 图像大小。顺便说一下,PNG 图像比 JPEG/JPG 重。

于 2018-04-17T12:02:33.680 回答