如何在Swift中获取图像文件大小?

我在用

UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIPopoverControllerDelegate 

这些代表从我的画廊或相机中选择图像。 那么,如何在选择图像后获得图像文件大小?

我想用这个:

 let filePath = "your path here" var fileSize : UInt64 = 0 do { let attr : NSDictionary? = try NSFileManager.defaultManager().attributesOfItemAtPath(filePath) if let _attr = attr { fileSize = _attr.fileSize(); print(fileSize) } } catch { } 

但在这里我需要一条路径,但是如果没有路径,我只能通过图像文件获得?

  var image = info[UIImagePickerControllerOriginalImage] as! UIImage var imgData: NSData = NSData(data: UIImageJPEGRepresentation((image), 1)) // var imgData: NSData = UIImagePNGRepresentation(image) // you can also replace UIImageJPEGRepresentation with UIImagePNGRepresentation. var imageSize: Int = imgData.length print("size of image in KB: %f ", Double(imageSize) / 1024.0) 

斯威夫特3

 let uploadData = UIImagePNGRepresentation(image) let array = [UInt8](uploadData) print("Image size in bytes:\(array.count)") 

迅捷3/4:

 if let imageData = UIImagePNGRepresentation(image) { let bytes = imageData.count let kB = Double(bytes) / 1000.0 // Note the difference let KB = Double(bytes) / 1024.0 // Note the difference } 

请注意kB和KB之间的差异。 回答这里,因为在我的情况下,我们有一个问题,而我们认为千字节为1024字节,但服务器端认为它是1000字节,这引起了一个问题。 链接了解更多信息。

PS。 几乎可以肯定你会使用kB(1000)。

 let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage let selectedImageData: NSData = NSData(data:UIImageJPEGRepresentation((selectedImage), 1)) let selectedImageSize:Int = selectedImageData.length print("Image Size: %f KB", selectedImageSize /1024.0) 
 let data = UIImageJPEGRepresentation(image, 1) let imageSize = data?.length 

重复如何以KB为单位获取UIImage的大小?

尝试这个

 import Darwin ... let size = malloc_size(&_attr)