ios - 如何将具有透明背景的图像保存到照片库,Swift?

标签 ios swift

我正在尝试将一些透明图像保存到照片库,但它们都以白色背景保存。所有图像都是我的 Assets 文件夹中的 png 文件。

func saveWp() {

    for number in count{
        let wp = UIImage(named: "neon\(number)")!
        let imageSaver = ImageSaver()
        imageSaver.writeToPhotoAlbum(image: wp)
    }
}

class ImageSaver: NSObject {
func writeToPhotoAlbum(image: UIImage) {
    UIImageWriteToSavedPhotosAlbum(image, self, #selector(saveError), nil)
}

@objc func saveError(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
    print("Save finished!")
}
}

最佳答案

为了保留图像的透明部分,您需要包含 alpha channel 。
只有某些文件格式允许您包含 Alpha channel 。 JPEG 没有。看起来HEIC格式确实支持alpha,但是在谷歌搜索几分钟后我找不到用alpha保存HEIC文件的方法。
PNG文件格式 支持阿尔法 channel 。您应该能够将图像作为带有 alpha 的 PNG 保存到相机胶卷中。查看 UIImage 函数 pngData() .
如果您使用源图像使用 UIImagePNGRepresentation() 创建 PNG 版本,您应该能够将其保存到相机胶卷并保留 Alpha channel 。 (免责声明:我在 another SO post 中找到了以下代码,但尚未对其进行测试。)

let imData = image.pngData()
let image2 = UIImage(data: imData)
UIImageWriteToSavedPhotosAlbum(image2, nil, nil, nil)

关于ios - 如何将具有透明背景的图像保存到照片库,Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65477364/

相关文章:

ios - 作为 UIView 的 subview 的编程 UIButton 没有响应

iphone - 我是否需要自定义 UIView 中的单独 UILabel 才能在 UITableViewCell 中具有单独的 UILabel 行?

iphone - addSubView 到 viewController.navigatorController

Swift 3 - UIImageWriteToSavedPhotosAlbum 内存问题

ios - 在字典键值对中,如何将值(其中value可以是不同类型的类型)解包为String

ios - 无法在 Yosemite 上启动 ios-sim

iphone - iOS 获取用户 iTunes 邮寄地址?在应用程序中购买真实产品以发货?

ios - sublayerTransform 的动画持续时间被忽略

ios - UITableView - 最后一部分的页脚滚出屏幕底部。如何预防?

ios - 在 swift 2.0 中构建自定义相机应用程序时出错