1. Base64(인코딩) 이란?
- Base64 는 64진법이라는 뜻입니다.
- 8비트 이진 데이터(Binary, 이미지/오디오 등)를 플랫폼 or 시스템에 영향을 받지 않는 공통 ASCII 문자열로 바꾸는 인코딩(encoding) 방식입니다.
- Web 에서 이미지를 표현하거나, 전자 메일을 통한 이진 데이터(Binary)를 전송하는 등의 역할로 쓰이고 있습니다.
- Base64 인코딩(encoding)을 하게 되면, 전송해야 할 데이터의 용량이 약 1/3(33%) 정도 늘어납니다. 6bit당 2bit의 Overhead가 발생하기 때문입니다.
- 이진 데이터(Binary) 데이터를 텍스트 기반 규격으로 다룰 수 있습니다.
- 사용 이유
- ASCII는 7 bits Encoding 이고, 나머지 1bit를 처리하는 방식이 시스템 별로 상이합니다.
- 따라서, ASCII로 이진 데이터(Binary, 이미지/오디오 등) 전송 시에 오류가 날 수 있습니다.
- 상이한 시스템 간의 데이터 전송에 영향받지 않게 데이터를 전송하기 위하여, ASCII 중 제어 문자와 일부 특수문자를 제외한 64개 데이터만 사용합니다.
1.1. 예시
- 위키피디아에서 변환 예제를 위와 같이 볼 수 있습니다.
- Man은 변환 공식에 따라 TWFu가 됩니다.
- https://www.base64-image.de/ 사이트에서 실제 이미지를 넣으면, BASE64 형태로 어떻게 바꿀 수 있는지 확인할 수 있습니다.
- html 에서는 img 태그에서 src에 넣어주면 이미지 링크 대신 사용할 수 있습니다.
<img src="img.png" />
<img src="base64로 인코딩 된 문자" />
1.2. 장단점
- 장점
- 이미지를 바로 표현할 수 있어 별도의 이미지를 위한 서버 구축이나 추가 작업이 필요 없습니다.
- 단점
- 동기 형식으로 데이터를 불러오기 때문에 렌더링 속도가 느려집니다.
- 디코딩을 위한 CPU 연산이 추가적으로 필요합니다.
- 똑같은 이미지를 표현하더라도 용량이 증가하는 문제가 발생합니다.
- 소스코드가 길어져 소스코드를 볼 때의 가독성이 떨어집니다.
- 데이터만 봤을 때, 타입을 알 수 없습니다. 타입이 무엇인지에 대한 정보를 따로 가지고 있어야합니다.
reference
- https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464
- https://blue-boy.tistory.com/227
- https://pilot376.tistory.com/3
- https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80