फोटो लाइब्रेरी, पारदर्शी स्विफ्ट के साथ एक छवि को कैसे बचाएं?

Dec 28 2020

मैं कुछ पारदर्शी चित्रों को फोटो लाइब्रेरी में सहेजने की कोशिश कर रहा हूं, लेकिन वे सभी सफेद पृष्ठभूमि के साथ सहेजे गए हैं। सभी चित्र मेरे संपत्ति फ़ोल्डर में 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!")
}

}

जवाब

2 DuncanC Dec 28 2020 at 21:50

अपनी छवि के पारदर्शी भागों को संरक्षित करने के लिए आपको अल्फा चैनल को शामिल करना होगा।

केवल कुछ फ़ाइल प्रारूप आपको एक अल्फा चैनल शामिल करने की अनुमति देते हैं। जेपीईजी नहीं है। ऐसा लगता है कि HEIC प्रारूप अल्फा का समर्थन करता है, लेकिन मैं कुछ मिनटों के बाद अल्फा के साथ HEIC फ़ाइलों को सहेजने का एक तरीका नहीं खोज सका।

PNG फ़ाइल स्वरूप अल्फा चैनलों का समर्थन करता है। आपको अल्फा के साथ PNG के रूप में अपनी छवि को कैमरा रोल में सहेजने में सक्षम होना चाहिए। UIImage फ़ंक्शन देखें pngData()और UIImagePNGRepresentation()

यदि आप अपनी स्रोत छवि का उपयोग करके PNG संस्करण बनाने के लिए उपयोग करते हैं UIImagePNGRepresentation(), तो आपको इसे कैमरा रोल में सहेजने और अल्फा चैनल को संरक्षित करने में सक्षम होना चाहिए। (डिस्क्लेमर: मुझे नीचे एक और SO पोस्ट में कोड मिला है , और उसने इसका परीक्षण नहीं किया है।)

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