투명한 배경이있는 이미지를 사진 라이브러리 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)