假设有一个 PHAsset 代表图像。如何获取图像的文件大小?
我看到的唯一方法是使用valueForKey:
私有ALAssetURL
密钥,并检索ALAssetRepresentation
的大小,但苹果可以拒绝此类应用。
答案 0 :(得分:1)
您可以从PHAsset创建ALAsset,而无需使用此处所述的任何私有函数: How to get an ALAsset URL from a PHAsset?
但是,在iCloud Photo Library的上下文中,获取文件大小会有问题。对于不在设备上的照片,您可能会得到" 0"或者设备上版本的大小,在非常情况下不是原始版本。
答案 1 :(得分:0)
您可以通过以下两行代码从PHAsset
获取图像的大小:
let Res = PHAssetResource.assetResources(for: yourPHAsset)
let imageSize = Res.first?.value(forKey: "fileSize")
如果要获取所有图像的大小,可以使用上面的两行代码,像这样:
//Fetch All Images From Gallery
let phFetchRes = PHAsset.fetchAssets(with: PHAssetMediaType.image , options: nil)
let phResCount = phFetchRes.count // In order to make indexSet
let indxSet = IndexSet.init(integersIn: 0..<phResCount)
let phArray = phFetchRes.objects(at: indxSet)
Print_Image_Sizes(PHAss: phArray) // Call Function
在这里,我们将打印每个图像的大小:
func Print_Image_Sizes(PHAss : [PHAsset]){
for ph in PHAss{
let size = PHAssetResource.assetResources(for: ph).first?.value(forKey: "fileSize")
print(size)
}
}
这是在图库中请求所有图像大小的最简单方法,而无需读取图像数据并将其转换为JPEG格式。