본문 바로가기
코드/영상처리

[영상처리] 파이썬으로 이미지 인코딩/디코딩, image to base 64, base 64 to image 로 변환하기

by 코드퀸 2022. 12. 5.
728x90
반응형

 

base64란?
base64(베이스 육십사)란 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.
-위키백과-

 

이미지 파일로 저장하기 어렵거나, 전송을 해야하거나 등등 다양한 이유에서 이미지를 문자열(base64)로 변환하여 사용한다. 

 

이미지를 base64로 변환하고, base64를 다시 이미지로 변환하는 코드는 다음과 같다. 

 

import base64
import io
import cv2
import numpy as np
from PIL import Image

# 이미지를 base64 변환
img_in = open('./input.png', 'rb')
base64_str = base64.b64encode(img_in.read())
imgdata = base64.b64decode(base64_str)

# base64를 이미지로 변환 
img_out = Image.open(io.BytesIO(imgdata))
img_out = np.array(img_out)
img_out = cv2.cvtColor(img_out, cv2.COLOR_BGR2RGB)

cv2.imwrite('./output.png', img_out)

 

특히, 

 

img_out = cv2.cvtColor(img_out, cv2.COLOR_BGR2RGB)  

 

이 부분의 코드가 중요하다.

Image를 PIL을 사용하여 변환하는데, PIL은 opencv와 기본 색 표현 체계가 다르다.  

따라서, 색 표현을 변경해 주지 않으면 아래와 같이 색이 다르게 저장됨으로 주의하여야 한다.

 

 

 

 

 

728x90
반응형

댓글