我正在尝试将一些透明图像保存到照片库,但它们都以白色背景保存。所有图像都是我的 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/