簡體   English   中英

使用 SwiftUI 原生 PhotosPicker 獲取 PHAsset 或有關圖像的任何元數據

[英]Using SwiftUI native PhotosPicker to get a PHAsset or any metadata about the image

我可以使用 iOS 16 / macOS Ventura 中的新 PhotosPicker 獲取圖像數據。 這是我所做的:

PhotosPicker(selection: $selectedPhotosPickerItems, matching: .any(of: [.images]), photoLibrary: .shared()) {
    Text("Select photos")
}
.onChange(of: selectedPhotosPickerItems) { newItems in for newItem in newItems {
      Task {
           if let data = try? await newItem.loadTransferable(type: Data.self) {
            ... =  UIImage(data: data)
            }
        }
    }
}

但是,我需要有關照片的更多信息。 如果我能以某種方式獲取 PHAsset,那就太棒了,或者至少是最初的創建日期。 PHAsset 不符合 Transferable。 有沒有辦法只知道圖像數據來獲取 PHAsset? 也許用 hash?

Xcode 14 / SwiftUI 4

我們在結果項中有標識符,因此可以獲取相應PHAsset

這是單個選擇項的簡化演示(假設 Info.plist 已更新並且授權請求已完成)。

.onChange(of: selectedPhotosPickerItem) { newItem in
    if let newItem, let localID = newItem.itemIdentifier {
        let result = PHAsset.fetchAssets(withLocalIdentifiers: [localID], options: nil)
        if let asset = result.firstObject {
            print("Got " + asset.debugDescription)
        }

*iOS/macOS 方法在這里是一樣的

測試模塊在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM