如何在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 {
}
但是在这里我需要一个路径,但是如果没有路径,如何仅通过图像文件就能获得路径呢?
回答:
请检查google的1 kb到1000字节。
https://www.google.com/search?q=1+kb+%3D+how+many+bytes&oq=1+kb+%3D+how+many+bytes&aqs=chrome..69i57.8999j0j1&sourceid=chrome&ie=UTF-8
因此,在获得适当大小的同时,我通过在App Bundle中添加图像以及在模拟器中添加照片来添加了多种方案。好吧,我从Mac上拍摄的图像为299.0 KB。
将图像添加到应用程序捆绑包
在Xcode中添加图片后,图片大小将在项目目录中保持不变。但是您可以从它的路径中获得它的大小,它将减小到257.0
KB。这是设备或模拟器中使用的图像的实际大小。
guard let aStrUrl = Bundle.main.path(forResource: "1", ofType: "png") else { return } let aUrl = URL(fileURLWithPath: aStrUrl)
print("Img size = \((Double(aUrl.fileSize) / 1000.00).rounded()) KB")
extension URL {
var attributes: [FileAttributeKey : Any]? {
do {
return try FileManager.default.attributesOfItem(atPath: path)
} catch let error as NSError {
print("FileAttribute error: \(error)")
}
return nil
}
var fileSize: UInt64 {
return attributes?[.size] as? UInt64 ?? UInt64(0)
}
var fileSizeString: String {
return ByteCountFormatter.string(fromByteCount: Int64(fileSize), countStyle: .file)
}
var creationDate: Date? {
return attributes?[.creationDate] as? Date
}
}
在模拟器中将图像添加到照片
将图像添加到模拟器或设备中的照片时,图像的大小从299.0 KB增加到393.0 KB。存储在设备或模拟器的文档目录中的图像的实际大小。
var image = info[UIImagePickerControllerOriginalImage] as! UIImagevar imgData: NSData = NSData(data: UIImageJPEGRepresentation((image), 1))
// var imgData: NSData = UIImagePNGRepresentation(image)
// you can also replace UIImageJPEGRepresentation with UIImagePNGRepresentation.
var imageSize: Int = imgData.count
print("size of image in KB: %f ", Double(imageSize) / 1000.0)
let image = info[UIImagePickerController.InfoKey.originalImage] as! UIImagelet imgData = NSData(data: image.jpegData(compressionQuality: 1)!)
var imageSize: Int = imgData.count
print("actual size of image in KB: %f ", Double(imageSize) / 1000.0)
通过添加.rounded(),它将为您提供393.0 KB,如果不使用它,则将为393.442
KB。因此,请使用上述代码一次手动检查图像尺寸。由于图像的大小在不同的设备和Mac中可能会有所不同。我只在Mac mini和模拟器iPhone
XS上进行过检查。
以上是 如何在Swift中获取图像文件的大小? 的全部内容, 来源链接: utcz.com/qa/401793.html