Base64 이미지 임베딩


564

Base64 이미지 임베딩은 어떤 브라우저에서 작동합니까? 내가 말하는 것은 이것 입니다.

페이지 크기가 상당히 커지므로 대부분의 경우 좋은 해결책이 아니라는 것을 알고 있습니다.

몇 가지 예 :

HTML :

<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

CSS :

div.image {
  width:100px;
  height:100px;
  background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}

3
예제가 포함 된 페이지를 설정하지
않으시

4
64 비트는 6 자 2 ^ 6 만 사용합니다. 텍스트 문자열은 인코딩 유형에 따라 문자 당 최소 8 비트를 갖습니다. 최소 25 %의 효율성을 잃어 버렸습니다. 빠른 테스트에서 약 30 %의 손실이 나타났습니다.

4
더 중요한 것은 효과적으로 물건을 캐시하는 능력을 잃어 버릴 것입니다.
Hut8

6
@BrianHaak은 "엄청나게"아무 말도하지 않습니다. 지난 몇 년 동안 ReactJs에서 개인적으로 base64 이미지를 여러 번 사용했으며 렌더링 문제가 전혀 없었습니다. 약간의 측정을 제공하십시오.
Lukas Liesis

1
@LukasLiesis 상업적 목적으로 Chrome에서 측정을 했으므로 여기에 공개 보고서가 없습니다. 고유 한 이미지를 렌더링 해도 문제는 없지만 캐싱 이 전혀 작동하지 않는 것을 고려해야 합니다. React.js에서는 (예를 들어 내비게이션 변경과 같이) 다시 렌더링 부품을 완성 할 때 매우 중요합니다.
Brian

답변:


361

업데이트 : 2017-01-10

이제 모든 주요 브라우저에서 데이터 URI를 지원합니다. IE는 버전 8부터 이미지 포함을 지원합니다.

http://caniuse.com/#feat=datauri


데이터 URI는 이제 다음 웹 브라우저에서 지원됩니다.

  • Firefox, SeaMonkey, XeroBank, Camino, Fennec 및 K-Meleon과 같은 Gecko 기반
  • KDE의 KIO 슬레이브 입출력 시스템을 통한 Konqueror
  • 오페라 (Nintendo DSi 또는 Wii와 같은 장치 포함)
  • Webkit뿐만 아니라 Safari (iOS 포함), Android 브라우저, Epiphany 및 Midori (WebKit은 Konqueror의 KHTML 엔진의 파생물이지만 Mac OS X은 KIO 아키텍처를 공유하지 않으므로 구현 방식이 다름)와 같은 WebKit 기반 / 크롬과 같은 크롬 기반
  • 삼지창
    • Internet Explorer 8 : Microsoft는 웹 기반 전자 메일 클라이언트에서 사용하는 것과 같은 스크립트 필터로 데이터 URI에 포함 된 JavaScript를 해석 할 수 없다는 우려를 비롯하여 보안상의 이유로 탐색 할 수없는 특정 콘텐츠로의 지원을 제한했습니다. 버전 8 [3]에서 데이터 URI는 32 KiB보다 작아야합니다.
    • 데이터 URI는 다음 요소 및 / 또는 특성에 대해서만 지원됩니다 [4] :
      • 대상 (이미지 만)
      • img
      • 입력 유형 = 이미지
      • 링크
    • 배경 이미지, 배경, 목록 스타일 유형, 목록 스타일 등의 URL을 허용하는 CSS 선언
    • Internet Explorer 9 : Internet Explorer 9에는 32KiB 제한이 없으며 더 넓은 요소로 허용됩니다.
    • 월드 브라우저 : 데이터 URI 체계를 기본적으로 지원하는 IE 쉘 브라우저

http://en.wikipedia.org/wiki/Data_URI_scheme#Web_browser_support


안녕하세요 필립, IE8의 32 KiB 크기 제한에 대한 해결 방법이 있습니까? IE7 및 IE6에서 base64가 지원됩니까? 그렇지 않은 경우 해결 방법이 있습니까 (크기 제한 없음)? 그렇다면 크기 제한이 있습니까? 그렇다면 해결 방법이 있습니까?
SexyBeast

아마도 도움이 될, 이것으로 봐 : phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under

표준은 아무 말도하지 않습니까? 좋은 답변 업데이트 =)에 대한 특정 공감.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

5
IE8 제한-내가 찾은 것은 IE8 에 32,768 ( Microsoft 당 ) 의 최대 이미지 제한 문자 가 있고 포함 된 이미지가 35,000 이상이라는 것입니다. 따라서 background-imageCSS 속성 ( url(...embedded image)이 IE8에서로드를 시도 할 때 문자 제한이 초과 class되어 속성이 포함 된 전체 가로드되지 않았습니다. 나는 이것을 고치지 않고 img최대를 초과 한 내장 이미지로 되돌아 갔고 이미지가 적절하게로드되었습니다.
id.ot

53

Chrome, Mozilla 및 Internet Explorer와 같은 대부분의 최신 데스크탑 브라우저는 데이터 URL로 인코딩 된 이미지를 지원합니다. 그러나 일부 모바일 브라우저에서 데이터 URL을 표시하는 데 문제가 있습니다. Android Stock Browser 및 Dolphin Browser는 내장 JPEG를 표시하지 않습니다. .

온라인 base64 인코딩 / 디코딩에 다음 도구를 사용하는 것이 좋습니다.

데이터 URL 형식을 지정하려면 "데이터 URL 형식"옵션을 선택하십시오.


3
base64로 인코딩하기 위해 온라인 도구가 필요하지 않습니다. 대신 Linux 또는 Mac OS X에서 base64 명령 줄 도구를 사용할 수 있습니다. echo "data : image / jpeg; base64,"$ (cat file.jpg | base64)
cstroe

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.