투명한 배경이있는 이미지를 사진 라이브러리 Swift에 저장하는 방법은 무엇입니까?

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

이미지의 투명한 부분을 유지하려면 알파 채널을 포함해야합니다.

일부 파일 형식 만 알파 채널을 포함 할 수 있습니다. JPEG는 그렇지 않습니다. HEIC 형식이 알파를 지원하는 것 같지만 몇 분 동안 인터넷 검색을 한 후 알파로 HEIC 파일을 저장하는 방법을 찾을 수 없습니다.

PNG 파일 형식 알파 채널을 지원 하지 않습니다 . 이미지를 알파가있는 PNG로 카메라 롤에 저장할 수 있어야합니다. UIImage 함수 pngData()UIImagePNGRepresentation().

를 사용하여 소스 이미지를 사용하여 PNG 버전을 만드는 UIImagePNGRepresentation()경우 카메라 롤에 저장하고 알파 채널을 유지할 수 있어야합니다. (면책 조항 : 다른 SO 게시물 에서 아래 코드를 찾았 으며 테스트하지 않았습니다.)

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