Bagaimana cara menyimpan gambar dengan latar belakang transparan ke perpustakaan foto, Swift?

Dec 28 2020

Saya mencoba menyimpan beberapa gambar transparan ke pustaka foto tetapi semuanya disimpan dengan latar belakang putih. Semua gambar adalah file png di folder aset saya.

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!")
}

}

Jawaban

2 DuncanC Dec 28 2020 at 21:50

Untuk mempertahankan bagian transparan dari gambar Anda, Anda perlu menyertakan saluran alfa.

Hanya beberapa format file yang memungkinkan Anda menyertakan saluran alfa. JPEG tidak. Sepertinya format HEIC mendukung alfa, tetapi saya tidak dapat menemukan cara untuk menyimpan file HEIC dengan alfa setelah beberapa menit googling.

Format file PNG melakukan saluran dukungan alpha. Anda harus dapat menyimpan gambar Anda ke camera roll sebagai PNG dengan alpha. Lihat fungsi UIImage pngData()dan UIImagePNGRepresentation().

Jika Anda menggunakan gambar sumber untuk membuat versi PNG UIImagePNGRepresentation(), Anda harus dapat menyimpannya ke camera roll dan mempertahankan saluran alfa. (Penafian: Saya menemukan kode di bawah ini di posting SO lain , dan belum mengujinya.)

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