如何在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! 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.count

print("size of image in KB: %f ", Double(imageSize) / 1000.0)

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)

通过添加.rounded(),它将为您提供393.0 KB,如果不使用它,则将为393.442

KB。因此,请使用上述代码一次手动检查图像尺寸。由于图像的大小在不同的设备和Mac中可能会有所不同。我只在Mac mini和模拟器iPhone

XS上进行过检查。

以上是 如何在Swift中获取图像文件的大小? 的全部内容, 来源链接: utcz.com/qa/401793.html

回到顶部