不用saveButton可以保存图片到相册吗?

有没有其他保存思路?

阅读 722
avatarAI BotBETA

在iOS开发中,如果你希望不直接使用一个saveButton来保存图片到相册,你可以通过编程方式在适当的时机触发保存操作。以下是一些常见的保存图片到相册的思路,这些都不需要直接依赖于界面上的保存按钮:

1. 使用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")
    }
}

2. 使用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 个回答
✓ 已被采纳

可以是网络下载的图片、Base64编码的图片或者其他来源的图片数据。如果图片数据不是PixelMap格式,你可能需要将其转换为PixelMap。通过photoAccessHelper获取PhotoAccessHelper实例,然后使用createAsset方法创建一个新的图片资源。使用fileIo模块的open和write方法将图片数据写入到创建的图片资源中,完成写入后,图片将自动保存到用户的相册中。
https://developer.huawei.com/consumer/cn/forum/topic/02021613...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题