Şeffaf arka plana sahip bir görüntü fotoğraf kitaplığına nasıl kaydedilir Swift?
Bazı şeffaf resimleri fotoğraf kitaplığına kaydetmeye çalışıyorum ama hepsi beyaz arka planla kaydedildi. Varlıklar klasörümdeki tüm resimler png dosyasıdır.
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!")
}
}
Yanıtlar
Görüntünüzün şeffaf kısımlarını korumak için alfa kanalını eklemeniz gerekir.
Yalnızca bazı dosya formatları bir alfa kanalı eklemenize izin verir. JPEG yapmaz. Görünüşe göre HEIC formatı alfa'yı destekliyor, ancak HEIC dosyalarını birkaç dakikalık googling'den sonra alfa ile kaydetmenin bir yolunu bulamadım.
PNG dosya formatı yapar destek alfa kanalları. Resminizi kamera rulosuna alfa ile PNG olarak kaydedebilmelisiniz. UIImage işlevlerine pngData()
ve UIImagePNGRepresentation()
.
Kullanarak bir PNG sürümü oluşturmak için kaynak görüntünüzü kullanırsanız UIImagePNGRepresentation()
, bunu kamera rulosuna kaydedebilmeli ve alfa kanalını koruyabilmelisiniz. (Sorumluluk reddi: Aşağıdaki kodu başka bir SO gönderisinde buldum ve test etmedim .)
let imData = UIImagePNGRepresentation(image)
let image2 = UIImage(data: imData)
UIImageWriteToSavedPhotosAlbum(image2, nil, nil, nil)