[html] base64로 이미지를 인코딩하면 어떤 효과가 있습니까?

이미지 (jpg 또는 png)를 base64로 변환하면 더 커질까요, 아니면 같은 크기일까요? 얼마나 클까요?

내 웹 사이트에서 base64로 인코딩 된 이미지를 사용하는 것이 좋습니까?



답변

약 37 % 더 커집니다.

대략적으로 Base64로 인코딩 된 바이너리 데이터의 최종 크기는 원래 데이터 크기의 1.37 배입니다.

출처 : http://en.wikipedia.org/wiki/Base64


답변

다음 은 David Calhoun 이 base64로 인코딩 할 때와하지 않을 때에 대한 정말 유용한 개요입니다 .

기본 답변 = gzip으로 압축 된 base64 인코딩 파일은 파일 크기가 표준 바이너리 (jpg / png)와 거의 비슷합니다. Gzip 바이너리 파일은 파일 크기가 더 작습니다.

테이크 아웃은 = 등, 인코딩 및 UI 아이콘을 Gzip으로 압축 몇 가지 장점이 있습니다,하지만 현명하지 못한 큰 사이즈의 이미지에 대해이 작업을 수행 할 수 있습니다.


답변

base64에서 더 커질 것입니다.

Base64는 데이터를 인코딩하기 위해 바이트 당 6 비트를 사용하는 반면 바이너리는 바이트 당 8 비트를 사용합니다. 또한 Base64에는 약간의 패딩 오버 헤드가 있습니다. 이진이 아닌 데이터 만 올바르게 처리 할 수있는 시스템에서 이진 데이터를 인코딩하기 위해 처음 개발 되었기 때문에 모든 비트가 Base64와 함께 사용되는 것은 아닙니다.

즉, 인코딩 된 이미지가 약 25 % 더 커지고 패딩에 대한 지속적인 오버 헤드가 발생합니다.


답변

이미지를 base64로 인코딩하면 이미지가 약 30 % 더 커집니다.

데이터 URI 스킴 에 대한 wikipedia 문서의 세부 사항을 참조하십시오 .

Base64로 인코딩 된 데이터 URI는 해당 바이너리보다 크기가 1/3 더 큽니다. (단, HTTP 서버가 gzip을 사용하여 응답을 압축하면이 오버 헤드가 2-3 %로 감소합니다.)


답변

대답은 다음과 같습니다 .

base64 이미지는 더 크지 만 base64가 더 나은 선택 인 몇 가지 조건이 있습니다.

base64 이미지의 크기

Base64는 64 개의 다른 문자를 사용하며 이는 2 ^ 6입니다. 따라서 base64는 8 비트 문자 당 6 비트를 저장합니다. 따라서 비율은 변환되지 않은 데이터에서 base64 데이터로의 6/8입니다. 이것은 정확한 계산이 아니라 대략적인 추정치입니다.

예:

48kb 이미지는 base64 변환 이미지로 약 64kb가 필요합니다.

계산 : (48/6) * 8 = 64

Linux 시스템의 간단한 CLI 계산기 :

$ cat /dev/urandom|head -c 48000|base64|wc -c
64843

또는 이미지 사용 :

$ cat my.png|base64|wc -c

Base64 이미지 및 웹 사이트

이 질문은 대답하기가 훨씬 더 어렵습니다. 일반적으로 base64를 사용하면 이미지가 클수록 의미가 없습니다. 그러나 다음 사항을 고려하십시오.

  • HTML 파일 또는 CSS 파일에 포함 된 많은 이미지는 유사한 문자열을 가질 수 있습니다. PNG의 경우 자주 반복되는 “A”문자를 찾습니다. gzip ( “deflate”라고도 함)을 사용하면 크기가 이길 수도 있습니다. 그러나 이미지 내용에 따라 다릅니다.
  • HTTP1.1의 요청 오버 헤드 : 특히 쿠키가 많은 경우 요청 당 몇 킬로바이트의 오버 헤드를 쉽게 가질 수 있습니다. base64 이미지를 포함하면 대역폭을 절약 할 수 있습니다.
  • gzip은 base64보다 XML에서 더 효과적이므로 SVG 이미지를 base64로 인코딩하지 마십시오.
  • 프로그래밍 : 동적으로 생성 된 이미지에서는 두 개의 종속 요청을 조정하기 위해 하나의 요청으로 이미지를 전달하는 것이 더 쉽습니다.
  • 딥 링크 : 이미지 다운로드를 방지하려면 HTML 페이지에서 이미지를 추출하는 것이 약간 까다 롭습니다.


답변

base64로 인코딩 된 이미지를 사용하려면 더 많은 공간과 대역폭이 필요합니다. 그러나 사이트에 작은 이미지가 많이있는 경우 이미지를 base64로 인코딩하고 html에 배치하여 페이지 로딩 시간을 줄일 수 있습니다. 이런 식으로 클라이언트 브라우저는 이미지에 많은 연결을 할 필요가 없지만 html로 표시됩니다.


답변