현대 웹 사이트의 SVG 아이콘 대 PNG 아이콘


92

나는 왜 그렇게 소수의 현대 웹 사이트가 여전히 아이콘에 PNG만을 사용하는지 궁금합니다 (그러나이 가정은 내 관찰에 근거한 것입니다). 지금까지 SVG보다 PNG를 사용하는 주된 이유는 IE8이고 SVG는 더 많은 CPU 성능을 사용한다는 것입니다 (하지만 이것이 단순한 1K 아이콘에 대한 문제라고 생각하지 않습니다). SVG를 스프라이트, 이미지 또는 인라인 SVG로 사용할 때 SVG를 사용할 때 많은 이점을 볼 수 있으며 현재 사용하고 있습니다.

( 연구를 찾고있는 질문 : PNG 스프라이트 대 SVG 스프라이트 대 아이콘 글꼴 은 성능에 초점을 맞추고 관련 답변이 없습니다. 아이콘 글꼴 대 SVG 캐싱 및 네트워크 문제 는 네트워크 트래픽에 초점을 맞추지 만 예를 들어 템플릿으로 쉽게 해결할 수 있습니다.)

새 웹 사이트가 최신 브라우저 만 지원하는 경우 SVG를 사용하지 않는 이유가 있습니까 (또는 아이콘에 PNG를 사용하는 이유가 있습니까)? IE8에 신경 쓰지 않고 SVG 사용이 템플릿 및 / 또는 캐싱으로 백업된다면 SVG에만 의존하는 문제가 있습니까?


12
반대 투표자님께,이 질문에 대한 구체적 의견이 무엇인지 알려주시겠습니까 ? 제가 구체적인 기술적 이유를 요청한 곳은 어디 입니까? 이러한 피드백에 감사 드리며 추가 질문을 개선 할 수 있습니다.
Robert Goldwein 2014-06-26

27
로버트, 의견 기반이 아닌 것 같지만 사람들은 때때로 좀비 모드로 들어가서 실제로 읽지 않고 질문을 훑어 봅니다.
Brigand 2014-06-26

단순함과 더 깨끗한 DOM을 위해 png를 선호합니다. 아래 답변에 추가해야 할 점은 svg를 사용하면 색상을 동적으로 변경할 수 있다는 것입니다. 아이콘에 일반, 활성 및 호버의 세 가지 색상이있는 경우 3 개의 png 이미지이지만 SVG는 하나뿐입니다.
CodeToad

@Robert은 [좀비 모드]입니다 우수한 사람 :) : D
qmaster에

답변:


105

SVG가 좋은 선택이 될 수있는 이유 :

  • 특히 CSS를 사용하여 모든 크기의 브라우저를 원활하게 지원합니다. background-size
  • 호버 효과 와 같이 확대 / 축소 할 수 있습니다.
  • SVG를 임베드하고 JavaScript 및 DOM을 사용하여 실시간으로 수정할 수 있습니다.
  • CSS를 사용하여 SVG 및 SVG 일부의 스타일을 지정할 수 있습니다 (색상, 윤곽선 등 변경).
  • 클라이언트 또는 서버에서 동적으로 SVG를 생성 할 수 있습니다. 텍스트 기반 특성으로 인해 저수준 라이브러리 나 강력한 서버가 필요하지 않습니다.

PNG가 좋은 선택이 될 수있는 이유 :

  • 브라우저 지원
  • PNG 스프라이트 시트를 만들기위한 기존 도구
  • 대부분의 사람들은 컴퓨터에 PNG 호환 편집기가 있습니다.
  • 그래픽이 사진이거나 이미지를 벡터화하기 어려운 기타

기타 문제 :

  • 일부 SVG 편집기는 SVG에 메타 데이터를 저장하여 파일 크기를 늘리고 의도하지 않게 데이터를 노출 할 수 있습니다.
    • 예를 들어 Inkscape에서 PNG를 내보낼 때 저장할 때 SVG에서이 디렉토리에 대한 절대 경로를 저장했습니다.
    • SVG 압축기는 이것을 제거 할 수 있지만 테스트하지는 않았습니다 (있는 경우 자유롭게 편집하십시오).

감사합니다. 우리의 그래픽 담당자는 일러스트 레이터에서 SVG를 만든 다음 손으로 편집하므로 일반적으로 요소와 속성이 거의없는 <svg>이므로 이러한 우려는 음소거됩니다. 제 걱정은 거의 이점 만보기 때문에 심각한 것을 간과 한 것입니다. 클래식 PNG에 비해-하지만 실제로는 <= IE8 또는> IE8로 요약됩니다. 예를 들어 더하기 기호가있는 원이있는 표준 아이콘은 PNG보다 SVG에서 훨씬 더 간결합니다.
Robert Goldwein 2014-06-26

예, 일부 사람들은 타사에서 SVG를 가져와 텍스트 편집기에서 열지 않거나 압축되었는지 확인합니다. 그냥 빼고 싶지 않았어요. 지금 생각해 보면 PNG에도 동일한 문제가 있습니다. 종종 쓸모없는 데이터 (웹 컨텍스트에서)가 저장됩니다. 이 데이터는 편집기, 파일 브라우저 및 기타 프로그램에서 사용됩니다. 그러나 이것은 jpeg에서 더 일반적입니다 (카메라는 브랜드, 모델, 렌즈, 설정 등을 저장합니다).
Brigand 2014-06-26

1
감사합니다. 프로젝트에서 SVG를 사용하는 데 아무런 단점이 없다고 생각하며 더 깊게 통합 할 것입니다. 귀하의 통찰력에 감사드립니다.
Robert Goldwein

벡터 아이콘을 찾는 올바른 방법은 아이콘 글꼴입니다. 나에게 SVG 아이콘의 가장 큰 단점은 CSS의 데이터 속성이 IE10 / 11에서 작동하지 않는다는 것입니다.
Gerfried

@Gerfried Icon 글꼴에는 많은 접근성 문제가 있습니다. 사용자가 웹 글꼴을 차단하거나 모든 글꼴을 자신의 글꼴로 재정의하기로 결정하면 (어떤 이유에서든) 모든 예쁜 아이콘이 즉시 깨집니다. 폴 백이 있지만 아직 100 % 작동하는 솔루션을 보지 못했습니다. 이것은 SVG 이미지의 경우가 아닙니다.
tomasz86

13

매우 단순한 모양 / 디자인을 보여 주거나 앱으로 그래픽의 일부를 특별히 수정해야하는 경우가 아니면 SVG를 사용하는 데 많은 인센티브가 없습니다. 레티 나 디스플레이의 경우 원래 크기의 두 배로 PNG를 생성 할 수 있으며 파일 크기는 훨씬 더 작게 만들 수 있습니다. 레거시 브라우저에 대한 더 나은 적용 범위는 말할 것도 없습니다 (자바 스크립트 또는 폴리 필 필요 없음).

저는 벡터 그래픽으로 UI를 만드는 사람이라고 말합니다. 멋진 디자인 도구이지만 전달 / 대역폭 / 도달을 위해 PNG를 차지하기가 어렵습니다. 어젯밤에 잘 알려진 로고를 테스트했습니다. CocaCola.svg는 거의 20K였습니다. 단색 / 플랫 컬러 였기 때문에 12 색 팔레트 압축을 사용하여 PNG-8로 내 보냈고 1.6K (!!!)로 줄였습니다. 몇 개의 로고에 대해서는 큰 문제는 아니지만 40 개를 표시해야 할 때 그들 중 .. 글쎄, 당신은 그림을 얻습니다.

가장 좋은 점은 PNG를 base64 데이터 URI로 변환하여 스타일 시트에 바로 포함 할 수 있다는 것입니다. 특히 모바일 브라우저에서 성능 및 호환성 문제로 이미 유명한 형식 인 SVG에서는 권장되지 않습니다.

마지막으로 두 가지 모두에 대한 강점과 사용 사례가 있다고 말해야합니다. 그러나 PNG는 훨씬 더 많은 흔적을 남겼고 전류와 함께 갈 때 저항에 직면하지 않습니다. SVG가 더 잘 맞는을 수행하는 이상한 경우를 들어, 내가보기 엔 추천 이 문서이 학습 자원을

행복한 디자인!


IMO, 이것이 최선의 답변입니다.
Marco Demaio

작업 한 Coca Cola 로고를 지정해야합니다. 2007 년의 현재 로고는 매우 단순하며 약 8KB 입니다. PNG-8에 비해 여전히 아무것도 아니지만 20KB보다 훨씬 낫습니다.
Caleb Taylor

12

SVG는 멋지고 (FakeRainBrigand가 멋지게 설명 된 방식) 아름답게 렌더링되지만 꽤 복잡 할 수 있습니다. 브라우저는 픽셀 기반 이미지 대신 벡터 데이터를 처리 할 때 더 많은 작업을 수행합니다. 이미지는 하나의 요소이며 SVG에는 인라인으로 사용할 때 DOM에 추가 할 수있는 많은 하위 항목이있을 수 있습니다.

나는 귀중한 성능 테스트를하지 않았지만 논리적 관점에서 SVG는 특히 중년 모바일 브라우저 (CPU 스트레스)를 다룰 때 성능면에서 신중하게 사용해야합니다. 다른 Android 및 IOS 장치에서 100 개의 SVG 이미지와 100 개의 PNG 이미지가 소비하는 CPU 전력을 볼 수있는 차트를 갖는 것이 매우 유용 할 것입니다.

SVG의 또 다른 버그는 태그에 어떤 브라우저와 오래된 IE에 관계없이 일부 Android / Samsung에 대한 너비 및 높이 속성이 필요하다는 것입니다. 그리고 A *** e Illustrator와 같은 대부분의 최신 SVG 편집기는 "viewBox"속성 만 추가합니다.

SVG의 가장 멋진 점은 모든 픽셀 밀도에서 멋지고 선명하게 렌더링된다는 것입니다.


3

사실, png는 거의 모든 곳에서 사용됩니다. 대부분의 경우 SVG가 쓸모없고 이미지가 더 커야하고 (내 생각에) 컴퓨터는 확대 할 때마다 이미지를 재생성해야하기 때문이라고 생각합니다 (항상 이미지를 확대하기 때문입니다. ?) 이것이 가장 중요한 이유라고 생각합니다.


26
SVG는 현대 (모바일) 웹 사이트에서 유비쿼터스 인 아이콘에 매우 유용합니다. 품질 저하없이 확장 및 CSS 스타일링을 제공하며, png에는없는 두 가지 중요한 기능이 있습니다.
user1884155 2014-08-14

사용자 입장에서는 무의미하지만 멀티미디어 개발자로서 어느 화면에서나 사용할 수 있고 항상 동일한 품질을 유지할 수있는 하나의 파일 만 사용하는 것이 좋습니다.
sebastian romero

2

성능면에서 SVG가 끔찍해질 수 있다는 점에 유의하십시오 . Chrome과 같은 최신 브라우저에서도 (2019 년에 작성했습니다!) SVG 아이콘이 수백 개 (실제적으로 3 ~ 800 개)있는 CMS와 유사한 페이지는 말 그대로 5 초 이상 브라우저를 중단하여 렌더링을 완료합니다. 한편 CPU를 최대로 사용합니다.

다른 곳에서 언급했듯이 페이지에 포함 된 SVG의 수 는 브라우저의 부하를 기하 급수적으로 증가 시키므로 이러한 상황에 직면하게되면

옵션 # 1 : svg를 웹 폰트로 변환 (여기 성능 차트 참조 : http://frozeman.de/blog/2013/08/why-is-svg-so-slow/ )

옵션 # 2 : 일반 오래된 PNG로 대체

즉석 색상 수정과 같은 멋진 작업을하고 싶지 않고 SVG 인스턴스가 많으면 이전 PNG가 작업을 수행하고 하루를 절약 할 수있는 상황입니다!


나는 그렇게 생각하지 않는다, SVG는 더 나은 성능을 가지고있다. 이것을 읽는 것이 좋습니다 : vecta.io/blog/comparing-svg-and-png-file-sizes
Harry Sarshogh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.