버그 잡이

Swift - base64 <-> UIImage 변환 방법 본문

Swift

Swift - base64 <-> UIImage 변환 방법

버그잡이 2021. 11. 30. 20:22

 

가끔 base64 형식의 이미지를 받아서 UIImage로 변환 후 사용할 때가 있습니다.

 

이때 사용하면 좋은 extension을 소개합니다.

 

extension UIImage {

    public var base64: String {
        return self.jpegData(compressionQuality: 1.0)!.base64EncodedString()
    }

    convenience init?(base64: String, withPrefix: Bool) {
        var finalData: Data?

        if withPrefix {
            guard let url = URL(string: base64) else { return nil }
            finalData = try? Data(contentsOf: url)
        } else {
            finalData = Data(base64Encoded: base64)
        }

        guard let data = finalData else { return nil }
        self.init(data: data)
    }

}

// https://stackoverflow.com/questions/55811092/swift-convert-base64-to-image-not-working


withPrefix는 base64 형식에는 꼭 붙는 string을 말합니다.

아래와 같은 base64 스트링이 있을때, "image/png;base64" 이 부분입니다.

 

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQoU2NkYGD4z0AEYBxViC+UqB88AKk6CgERnGWPAAAAAElFTkSuQmCC

 

Data(baseEncoded:) 를 활용하여 encode 하는 경우, prefix가 붙으면 안 되기 때문에,

이때는 파라미터로 prefix가 제거된 string을 넣어줘야 합니다.

 

 

반응형
Comments