我目前正在管理具有多个图片的PHAsset(通过我的应用程序正在创建的相册),我可以毫无问题地显示它。对于我的PHAsset的每张图片,我正在计算应用程序中每张图片的哈希值。但是,如果我正在修改应用程序中的图片(例如通过“照片”,则要更改图片的颜色),如果我又计算一次哈希,则无法检测到更新。恢复我的应用程序时的PHAsset图片,未检测到更新,哈希值保持不变...
这里是从PHAsset获取图像的代码:
var img: UIImage?
let manager = PHImageManager.default()
let options = PHImageRequestOptions()
options.version = .original
options.isSynchronous = true
manager.requestImageData(for: asset, options: options) { (data, _, _, _) in
if let data = data{
img = UIImage(data: data)
}
}
return img
[我在添加图片时使用此函数(以计算哈希),当我需要检查PHasset图片的哈希时,我使用]来检索PHAssetCollection。
let collection = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
但是未检测到任何更改...可能需要刷新PHAssetCollection来检索图片上的更改吗?我错过了什么吗?
请注意,我正在使用以下方法计算图像的哈希值:
//function described just above let img = getSavedImageFromPHAsset(asset: myAsset)! let img_hash = img.sha256() //I'm comparing the hashes with this value func sha256(data: Data) -> Data { var digestData = Data(count: Int(CC_SHA256_DIGEST_LENGTH)) _ = digestData.withUnsafeMutableBytes {digestBytes in data.withUnsafeBytes {messageBytes in CC_SHA256(messageBytes, CC_LONG(data.count), digestBytes) } } return digestData }
我以为链接到PHAsset的图像被更改后,我就能够检测到它的修改(我可以在我的应用程序的屏幕上看到更新的图片,但是哈希计算仍然是相同的。]
我目前正在管理具有多个图片的PHAsset(通过我的应用程序正在创建的相册),我可以毫无问题地显示它。对于我的PHAsset的每张图片,我正在计算哈希...
尝试以下操作: