[iOS] Convert Base64 Binary Data to UIImage Type

Seonhu Kim·2023년 4월 9일
0

iOS

목록 보기
11/16
post-thumbnail

자바스크립트 브릿지 콜을 통해 이미지 바이너리 데이터를 받은 경우가 있었다.
객체 자체를 받으면 좋았겠지만, 보안 및 여러가지 이유로 Base64 형태의 바이너리 데이터를 받았는데, 이를 네이티브에서 디코딩하여 UIImage로 변환하는 방법을 정리하고자 한다.

Base64란 무엇인가?

컴퓨터 분야에서 쓰이는 Base 64(베이스 육십사)는 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념

Chat GPT를 통해 생성한 예시코드

보다시피, 원래는 "data:image/jpeg;base64,"로 시작하게 되는데 GPT에서는 이걸 split()을 써서 자른 것 같다. 나는 앞 부분까지 받아 처리를 해주었다.

// Base64 인코딩 된 데이터를 Data 타입으로 디코딩
guard let imageData = Data(base64Encoded: base64String.components(separatedBy: ",")[1], options: .ignoreUnknownCharacters) else {
    print("Failed to decode base64 string")
    return
}

// UIImage로 변환합니다.
guard let image = UIImage(data: imageData) else {
    print("Failed to create UIImage from data")
    return
}

그런데, base64String이 ,를 포함하지 않는다면 components에서 index 에러가 날 것이다. 그래서 아래와 같이 방어로직 하나를 추가해준다.

guard base64String.hasPrefix(",") else { return }
profile
iOS Developer.

0개의 댓글