TSPhotoSizeHelper.swift 1013 B

12345678910111213141516171819202122232425262728293031
  1. //
  2. // TSPhotoSizeHelper.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/4/6.
  6. //
  7. import Photos
  8. // MARK: - 精准获取图片大小(单位:字节)
  9. struct TSPhotoSizeHelper {
  10. /// 同步获取(适合快速判断)
  11. static func getImageFileSizeSync(asset: PHAsset) -> Int {
  12. let resources = PHAssetResource.assetResources(for: asset)
  13. guard let resource = resources.first else { return 0 }
  14. return Int(resource.value(forKey: "fileSize") as? Int64 ?? 0)
  15. }
  16. /// 异步获取(推荐主线程使用)
  17. static func getImageFileSizeAsync(asset: PHAsset, completion: @escaping (Int) -> Void) {
  18. DispatchQueue.global(qos: .userInitiated).async {
  19. let size = getImageFileSizeSync(asset: asset)
  20. DispatchQueue.main.async { completion(size) }
  21. }
  22. }
  23. /// 快速判断是否超过10MB
  24. static func isLargerThan10MB(asset: PHAsset) -> Bool {
  25. return getImageFileSizeSync(asset: asset) > 10 * 1024 * 1024
  26. }
  27. }