有没有其他保存思路?
在iOS开发中,如果你希望不直接使用一个saveButton
来保存图片到相册,你可以通过编程方式在适当的时机触发保存操作。以下是一些常见的保存图片到相册的思路,这些都不需要直接依赖于界面上的保存按钮:
UIImageWriteToSavedPhotosAlbum()
这是最直接的方法,你可以在任何合适的代码位置调用这个方法将UIImage
对象保存到用户的相册中。这个方法会异步地执行,并允许你提供一个完成时的回调函数。
if let image = UIImage(named: "yourImageName") {
UIImageWriteToSavedPhotosAlbum(image, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
}
@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
if let error = error {
// 处理保存失败的情况
print("Error saving image: \(error)")
} else {
// 图片已保存
print("Image saved successfully")
}
}
PHPhotoLibrary.shared().performChanges()
如果你需要进行更复杂的相册操作(比如添加图片到特定的相册),你可以使用Photos
框架中的PHPhotoLibrary
类。这个方法允许你以事务的方式执行对相册的更改,并在完成后接收回调。
import Photos
PHPhotoLibrary.shared().performChanges({
let creationRequest = PHAssetCreationRequest.forAsset()
creationRequest.addResource(with: .photo, fileURL: yourImageFileURL, options: nil)
}, completionHandler: { success, error in
if success {
// 图片已保存
print("Image saved successfully")
} else if let error = error {
// 处理保存失败的情况
print("Error saving image: \(error)")
}
})
注意:这里的yourImageFileURL
应该是你图片文件的URL,这意味着你需要先将图片保存到应用的沙盒中,然后获取这个文件的URL。
以上两种方法都不需要直接使用saveButton
,你可以根据应用的需求和场景选择合适的方法。UIImageWriteToSavedPhotosAlbum()
适用于简单的保存操作,而PHPhotoLibrary.shared().performChanges()
则提供了更高级的控制,允许你将图片添加到特定的相册等。
1 回答541 阅读✓ 已解决
1 回答547 阅读
1 回答497 阅读
1 回答388 阅读
490 阅读
421 阅读
可以是网络下载的图片、Base64编码的图片或者其他来源的图片数据。如果图片数据不是PixelMap格式,你可能需要将其转换为PixelMap。通过photoAccessHelper获取PhotoAccessHelper实例,然后使用createAsset方法创建一个新的图片资源。使用fileIo模块的open和write方法将图片数据写入到创建的图片资源中,完成写入后,图片将自动保存到用户的相册中。
https://developer.huawei.com/consumer/cn/forum/topic/02021613...