JPEG gegen PNG gegen BMP gegen GIF gegen SVG


40

Ich würde gerne wissen, welches dieser Formate bei gleicher Bildqualität weniger Speicherplatz benötigt und was die Hauptunterschiede zwischen diesen Formaten sind.


15
Btw, JPG und JPEG beziehen sich beide auf dasselbe (siehe zB en.wikipedia.org/wiki/JPEG ), so dass der Titel etwas vereinfacht werden könnte.
Jonik

1
Nicht sicher, wie meine Antwort Ihre ursprüngliche Frage nicht beantwortet und wie Ihre gewählte Antwort ...? : - /
Django Reinhardt

4
> Welches dieser Formate weniger Speicher benötigt Um, definieren Sie "weniger Speicher". Meinen Sie, es nimmt weniger Speicherplatz ein? (JPEG für Fotos, PNG und / oder GIF für Screenshots.) Bedeuten Sie, dass die komprimierte Datei weniger Speicherplatz benötigt? (Wie Festplattenspeicher.) Bedeutet dies, dass das decodierte Image weniger Speicherplatz in
Anspruch

Antworten:


54

Ab Was ist der Unterschied zwischen TIFF, GIF, JPG, JPEG, PNG und einer BMP-Datei?

BMP - Bitmap. Dies war wahrscheinlich das erste digitale Bildformat, an das ich mich erinnern kann. Jedes Bild auf einem Computer schien damals ein BMP zu sein. In Windows XP speichert das Paint-Programm seine Bilder automatisch in BMP. In Windows Vista und höher werden Bilder jedoch jetzt in JPEG gespeichert. BMP ist die Basisplattform für viele andere Dateitypen.

JPG / JPEG - (Joint Photographic Experts Group) Das JPEG- Format wird für Farbfotos oder Bilder mit vielen Überblendungen oder Verläufen verwendet. Es ist nicht gut mit scharfen Kanten und neigt dazu, sie ein wenig zu verwischen, wenn es nicht in hoher Qualität gelagert wird. Dieses Format wurde mit der Erfindung der Digitalkamera populär. Die meisten, wenn nicht alle Digitalkameras laden Fotos als JPEG-Datei auf Ihren Computer herunter. Offensichtlich sehen die Hersteller von Digitalkameras den Wert in qualitativ hochwertigen Bildern, die letztendlich weniger Platz beanspruchen.

GIF - (Graphics Interchange Format) Das GIF- Format eignet sich am besten für Text, Strichzeichnungen, Screenshots, Cartoons und Animationen. Gif ist auf eine Gesamtzahl von 256 Farben oder weniger beschränkt, daher sind Gif-Bilder relativ klein. Es wird häufig zum schnellen Laden von Webseiten verwendet. Es macht auch ein tolles Banner oder Logo für Ihre Webseite. Animierte Bilder können auch als Folge statischer Bilder im GIF-Format gespeichert werden. Beispielsweise würde ein blinkendes Banner als Gif-Datei gespeichert.

PNG - (Portable Networks Graphic) Dieses verlustfreie Format ist eines der besten Bildformate. Es war nicht immer mit allen Webbrowsern oder Bildsoftware kompatibel, aber heutzutage ist es das beste Bildformat für Websites. Ich benutze .png für Logos und Screenshots. Eine der erstaunlichsten Fähigkeiten besteht darin, Bilder verlustfrei (ohne Pixelverlust) zu komprimieren, obwohl die endgültige komprimierte Größe zwischen den Bildeditoren variiert.

TIFF - (Tagged Image File Format) Dieses Dateiformat wurde seit 1992 nicht mehr aktualisiert und gehört jetzt Adobe. Es kann ein Bild und Daten (Tags) in einer Datei speichern. TIFF kann komprimiert werden, aber es ist eher seine Fähigkeit, Bilddaten in einem verlustfreien Format zu speichern, was eine TIFF-Datei zu einem nützlichen Bildarchiv macht, da im Gegensatz zu Standard-JPEG-Dateien eine TIFF-Datei mit verlustfreier Komprimierung (oder keiner) bearbeitet und erneut bearbeitet werden kann -gespeichert, ohne die Bildqualität zu verlieren. Diese Datei wird häufig zum Scannen, Faxen, Textverarbeiten usw. verwendet. Es ist kein gängiges Dateiformat mehr für digitale Fotos, da JPEG-Dateien eine hervorragende Qualität haben und weniger Speicherplatz beanspruchen.


1
Beachten Sie, dass der IE6 ohne eine Art "Hack" Alpha-Transparenz in PNG-Dateien, dh Bereichen mit
halbopaker

2
... und überraschend viele Leute nutzen immer noch den IE6 ( tinyurl.com/56kp ). Und MS wollen es bis 2014 unterstützen! :( ( tinyurl.com/qvdyn5 )
Josh Comley

9
BMP: Dies ist nicht die Basis für andere Dateiformate. Soweit ich weiß, werden der BMP-Header und die Dateistruktur nicht mit anderen Formaten geteilt (zum Beispiel im Gegensatz zu TIFF). JPEG: Es wurde erstellt und existierte im Internet, bevor sich Digitalkameras durchsetzten. Viele Digitalkameras ermöglichen auch das Speichern eines "unformatierten" Formats, das normalerweise ein TIFF ist, wenn auch mit herstellerspezifischen Inhalten. GIF: Nicht auf 256 Farben pro Bild beschränkt, nur auf 256 Farben pro Frame (siehe en.wikipedia.org/wiki/Graphics_Interchange_Format#True_color ).
Joey

4
TIFF: Das gängige Datei- und Containerformat für RAW-Bilder von Digitalkameras (Nicht-Point-and-Shoot-Bilder). TIFF erlaubt nahezu beliebige Daten (daher markiert ), was auch bedeutet, dass es beliebige Komprimierungsmethoden von LZW (GIF), LZ77 (PNG) bis JPEG und anderen unterstützt. TIFF ermöglicht auch mehrere Bilder (Seiten) in einer Datei.
Joey

4
Während die Antwort gut darin ist, den Unterschied der Bildformate in Bezug auf die Geschichte und die allgemeine Verwendung zu beantworten, wurden in der ursprünglichen Antwort auch die relativen Größen und die Qualität gefragt ...
camster342

76

Im xkcd-Stil von lbrandy.com :

Alt-Text


4
Illustriert den Punkt schön :) (auch wenn ich noch nie jemanden gesehen habe, der eine solche "Always JPEG!"
Richtlinie

7
+1 Da dieses Bild das JPEG-Problem so gut darstellt ...
Johan

5
Ich wünschte, ich könnte doppelt stimmen! Ich sende das an alle, die mir beschissene JPEGs schicken!
Tim Büthe

3
© 2008 Louis Brandy. Alle Rechte vorbehalten....?
Arjan

3
Facebook hat zum Beispiel diese "Immer JPEG" -Richtlinie. Ich lade ein schönes verlustfreies PNG-Bild mit 99 KB hoch und Facebook konvertiert es in ein hässliches JPEG mit 175 KB.
Paul

63

Sie sollten sich einiger Schlüsselfaktoren bewusst sein ...

Erstens gibt es zwei Arten der Komprimierung: Verlustfrei und Verlustbehaftet .

  • Verlustfrei bedeutet, dass das Bild verkleinert wird, ohne die Qualität zu beeinträchtigen.
  • Verlustbehaftet bedeutet, dass das Bild (noch) kleiner wird, was sich jedoch nachteilig auf die Qualität auswirkt. Wenn Sie ein Bild immer wieder in einem Lossy-Format speichern, wird die Bildqualität immer schlechter.

Es gibt auch verschiedene Farbtiefen (Paletten): Indizierte Farbe und Direkte Farbe .

  • Indiziert bedeutet, dass das Bild nur eine begrenzte Anzahl von Farben (normalerweise 256), die vom Autor gesteuert werden, in einer sogenannten Farbkarte speichern kann
  • Direkt bedeutet, dass Sie viele tausend Farben speichern können , die vom Autor nicht direkt ausgewählt wurden

BMP - Verlustfrei / Indiziert und Direkt

Dies ist ein altes Format. Es ist verlustfrei (beim Speichern gehen keine Bilddaten verloren), aber es gibt auch kaum bis gar keine Komprimierung, was bedeutet, dass das Speichern von BMP zu SEHR großen Dateien führt. Es kann sowohl indizierte als auch direkte Paletten geben, aber das ist ein kleiner Trost. Die Dateigrößen sind so unnötig groß, dass niemand dieses Format wirklich verwendet.

Gut für: Nichts wirklich. Es gibt nichts, was BMP auszeichnet, oder was von anderen Formaten nicht besser gemacht wird.

BMP gegen GIF


GIF - Nur verlustfrei / indiziert

GIF verwendet verlustfreie Komprimierung, dh Sie können das Bild immer und immer wieder speichern, ohne Daten zu verlieren. Die Dateigrößen sind viel kleiner als bei BMP, da tatsächlich eine gute Komprimierung verwendet wird, aber nur eine indizierte Palette gespeichert werden kann. Dies bedeutet, dass die Datei in den meisten Anwendungsfällen maximal 256 verschiedene Farben enthalten kann. Das klingt nach einer kleinen Menge, und das ist es auch.

GIF-Bilder können auch animiert und transparent sein.

Geeignet für: Logos, Strichzeichnungen und andere einfache Bilder, die klein sein müssen. Nur wirklich für Websites verwendet.

GIF vs JPEG


JPEG - Verlust / Direkt

JPEG-Bilder wurden entwickelt, um detaillierte fotografische Bilder so klein wie möglich zu halten, indem Informationen entfernt werden, die das menschliche Auge nicht bemerkt. Infolgedessen handelt es sich um ein Lossy-Format, und das wiederholte Speichern derselben Datei führt dazu, dass im Laufe der Zeit mehr Daten verloren gehen. Es hat eine Farbpalette von Tausenden von Farben und eignet sich daher hervorragend für Fotos. Die verlustbehaftete Komprimierung wirkt sich jedoch schlecht auf Logos und Strichzeichnungen aus: Sie sehen nicht nur unscharf aus, sondern haben auch eine größere Dateigröße als GIFs!

Geeignet für: Fotografien. Auch Farbverläufe.

JPEG vs GIF


PNG-8 - Verlustfrei / Indiziert

PNG ist ein neueres Format und PNG-8 (die indizierte Version von PNG) ist wirklich ein guter Ersatz für GIFs. Leider hat es ein paar Nachteile: Erstens kann es keine Animationen wie GIF unterstützen. Zweitens gibt es einige Support-Probleme mit älteren Browsern wie IE6. Drittens haben wichtige Software wie Photoshop eine sehr schlechte Implementierung des Formats. (Verdammt, Adobe!) PNG-8 kann wie GIFs nur 256 Farben speichern.

Gut für: Das Wichtigste, was PNG-8 besser kann als GIFs, ist die Unterstützung von Alpha Transparency.

PNG-8 gegen GIF

Wichtiger Hinweis: Photoshop unterstützt Alpha Transparency für PNG-8-Dateien nicht. (Verdammt, Photoshop!) Es gibt jedoch Möglichkeiten, Photoshop PNG-24 in PNG-8-Dateien zu konvertieren und dabei die Transparenz beizubehalten. Eine Methode ist PNGQuant , eine andere Methode ist das Speichern Ihrer Dateien mit Fireworks .


PNG-24 - Verlustfrei / Direkt

PNG-24 ist ein großartiges Format, das verlustfreie Codierung mit direkter Farbe kombiniert (Tausende von Farben, genau wie JPEG). In dieser Hinsicht ist es BMP sehr ähnlich, mit der Ausnahme, dass PNG tatsächlich Bilder komprimiert, was zu viel kleineren Dateien führt. Leider sind PNG-24-Dateien immer noch viel größer als JPEGs, GIFs und PNG-8s. Sie müssen sich also noch überlegen, ob Sie wirklich eine verwenden möchten.

Obwohl PNG-24 bei Komprimierung Tausende von Farben zulassen, sind sie nicht dazu gedacht, JPEG-Bilder zu ersetzen. Ein als PNG-24 gespeichertes Foto ist wahrscheinlich mindestens fünfmal so groß wie ein entsprechendes JPEG-Bild, wobei die sichtbare Qualität nur geringfügig verbessert wird. (Dies kann natürlich ein wünschenswertes Ergebnis sein, wenn Sie sich keine Gedanken über die Dateigröße machen und die bestmögliche Bildqualität erzielen möchten.)

Genau wie PNG-8 unterstützt PNG-24 auch Alpha-Transparenz.


SVG - Verlustfrei / Vektor

Ein Dateityp, der derzeit immer beliebter wird, ist SVG, das sich von allen oben genannten insofern unterscheidet, als es sich um ein Vektordateiformat handelt (alle oben genannten sind Raster ). Dies bedeutet, dass es tatsächlich aus Linien und Kurven anstelle von Pixeln besteht. Wenn Sie ein Vektorbild vergrößern, sehen Sie immer noch eine Kurve oder eine Linie. Wenn Sie ein Rasterbild vergrößern, werden Pixel angezeigt.

Zum Beispiel:

PNG vs SVG

SVG gegen PNG

Dies bedeutet, dass SVG perfekt für Logos und Symbole geeignet ist, die auf Retina-Bildschirmen oder in verschiedenen Größen scharf bleiben sollen.

Darüber hinaus werden SVG-Dateien mit XML geschrieben und können so in einem Texteditor geöffnet und bearbeitet werden, sodass sie bei Bedarf im Handumdrehen bearbeitet werden können. Sie können beispielsweise JavaScript verwenden, um die Farbe eines SVG-Symbols auf einer Website so zu ändern, als würden Sie Text verwenden (dh Sie benötigen kein zweites Bild).

Ich hoffe das hilft!


Gute Illustration. Achten Sie auf durch Komprimierung verursachte Artefakte. Ich denke, JPEG-ähnliche Videokomprimierungsformate haben das Problem, dass durchgezogene rote Bereiche dazu neigen, an den Rändern "auszubluten".
James P.

1
Sie irren sich, wenn PNG keine Animation unterstützt. PNG kann es gut, die meisten Betrachter und Browser unterstützen es nicht. en.wikipedia.org/wiki/APNG Firefox unterstützt es anscheinend ziemlich gut. people.mozilla.com/~dolske/apng/demo.html
Rob

1
@ DjangoReinhardt Ich weiß, dass Sie ein Beispiel in Ihre Antwort aufgenommen haben, aber was SVGs und PNGs betrifft, unter welchen Umständen können wir eine größere SVG (in Dateigröße) und eine PNG sehen?
Hanna

1
@ Johannes Gute Frage. SVG hat einige Nachteile, insbesondere wenn sie besonders kompliziert sind (oder schlecht gespeichert wurden - aber das ist die Schuld des Autors, nicht die des Dateiformats). Ich werde versuchen, etwas hinzuzufügen, das dies beantwortet - obwohl ich vermute, dass eine SVG immer kleiner (oder gleich groß) sein wird wie eine PNG.
Django Reinhardt

1
Ein weiterer Spaßfaktor: BMP-Dateien haben eine ähnliche Größe wie PNG, wenn Sie sie komprimieren.
Jiggunjer

28

Die vorhandenen Antworten enthalten nur sehr wenige technische Daten, daher werde ich diese hier einfügen.

  • JPEG : Bis zu 24-Bit-Farben (möglicherweise mehr?), Variable (normalerweise hohe) Komprimierung, verlustbehaftet, keine Alpha-Unterstützung
  • PNG : Bis zu 48-Bit-Farbe, moderate Komprimierung, verlustfreie Alpha-Unterstützung
  • BMP : Bis zu 24-Bit-Farbe, sehr geringe Komprimierung, verlustfreie Alpha-Unterstützung
  • GIF : Bis zu 8-Bit-Farben, geringe Komprimierung, verlustfrei, Transparenzunterstützung, Animationsunterstützung

Farbtiefe

  • 8-Bit-Farbe == 256 Farben
  • 24-Bit-Farben = 16.777.216 Farben
  • 48-Bit-Farben = 281.474.976.710.656 Farben

Die meisten Computermonitore arbeiten mit einer Farbtiefe von 24 Bit. Das menschliche Auge kann so viele Farben unterscheiden. Zusätzliche Farbtiefe besteht hauptsächlich darin, Informationen von einem Sensor speichern zu können, damit bei der Manipulation eines Fotos mehr Daten zur Verfügung stehen. Der Versuch, ein Foto in 8-Bit-Farbe darzustellen, führt zu Körnigkeit.

Kompression

Dies bezieht sich im Wesentlichen darauf, wie groß die endgültige Datei sein wird. Mehr Komprimierung entspricht einer kleineren Datei. JPEG erreicht jedoch kleine Dateigrößen, indem Daten weggeworfen werden. Dies wird als "verlustbehaftete" Komprimierung bezeichnet, da Sie niemals die ursprünglichen unkomprimierten Daten zurückerhalten können. Die Komprimierung ist auch für Fotos optimiert, bei denen Kanten mit hohem Kontrast selten sind. Wie in anderen Antworten angegeben, ist es eine schlechte Wahl für alles andere als Fotos.

Alpha / Transparenz

Alpha bezieht sich auf Transparenz, impliziert jedoch, dass es mehr als eine Transparenzstufe gibt. GIF kann transparente Pixel definieren, ist jedoch entweder undurchsichtig oder 100% transparent, und "transparent" wird als eine der 256 Farben verwendet. PNG und BMP können jedes Pixel als undurchsichtig, transparent oder teilweise transparent markieren, wie ein Stück farbiges Glas. Am häufigsten gibt es 256 Transparenzstufen, obwohl PNG tatsächlich bis zu 65.536 Stufen haben kann. JPEG unterstützt keine Transparenz.

Animation

Tatsächlich unterstützt von diesen Formaten nur GIF Animationen. Es gibt Spezifikationen für Animationen mit PNG (MNG, APNG) und JPEG (MJPEG), diese werden jedoch nicht allgemein unterstützt. (APNG funktioniert in den neuesten Versionen von Firefox und Opera.) In der Praxis sind die meisten Animationen, die Sie auf Webseiten sehen, in Flash implementiert.


APNG gewinnt viel Unterstützung.
Phoshi

Sicher genug. Ich hatte es nicht bemerkt.
wfaulk,

Nun, die meisten modernen Browser unterstützen es, aber es ist wenig bekannt. IE8 unterstützt es nicht, glaube ich nicht (kann es aber als PNG lesen, zeigt also den ersten Frame an)
Phoshi

Tolle Gedankenverarbeitung ..
InfantPro'Aravind '17.

25
  • Verwenden Sie GIF, wenn das Bild nur wenige Farben aufweist (z. B. Symbole). Kann auch für animierte Bilder (wie Werbebanner) verwendet werden.
  • Verwenden Sie JPG, wenn das Bild viele Farben hat (wie Fotos). JPEG ist das gleiche.
  • Verwenden Sie BMP, wenn Sie das Bild ohne Komprimierung speichern möchten. Viel größere Dateigröße!
  • Verwenden Sie PNG, wenn Sie das Bild im Web veröffentlichen und auf dem neuesten Stand der Technik sein möchten. Vorteile: Geeignet als moderner Ersatz für GIF und JPG, ist ein offener Standard und ermöglicht Transparenz. Nachteile: Wird von älterer Software nicht unterstützt und die Datei kann größer sein als vergleichbares GIF oder JPG.

3
+1 für praktische Überlegungen zum Verwendungszeitpunkt.
Andrew Coleson

4
Seien Sie vorsichtig bei der Verwendung von PNGs. Als verlustfreies Format eignen sie sich aufgrund der Dateigröße im Allgemeinen nicht für Fotos und dergleichen. Auf keinen Fall ein "moderner Ersatz" für alle Zwecke. Das Transcodieren von JPG nach PNG wäre wirklich dumm.
Paul McMillan

@Paul - Ich stimme zu, es ist sicherlich nicht für alle Zwecke und insbesondere nicht für Fotos nützlich, aber wenn es für Webgrafiken verwendet wird, ersetzt es JPG.
Torben Gundtofte-Bruun

2
Ich glaube nicht, dass es heutzutage jemals einen Bedarf an BPM gibt.
Arjan

1
PNG ist fast immer kleiner als GIF. Es hat ein überlegenes Komprimierungsschema. Wenn es größer ist als das gleich aussehende GIF, liegt dies normalerweise an mieser Software (z. B. Photoshop vor CS2). Verwenden Sie palettiertes (nicht 24-Bit!) PNG und korrigieren Sie es mit dem PNG-Optimierer: imageoptim.pornel.net. Sie werden nie wieder Bandbreite für GIFs verschwenden wollen.
Kornel

13

Bildbeschreibung hier eingeben


BMP:

  • Altes Format. Kein Datenverlust.
  • Nicht komprimiert - Speichert den Wert jedes Pixels. Daher haben Bilder mit den gleichen Abmessungen die gleiche Dateigröße (Kilobyte / Megabyte). Beispielsweise sind 800 × 600 BMP-Bilder immer 1,37 MiB groß wie das beliebte WinXP-Wallpaper "Bliss" Rolling Hills.
  • Transparenz / Transluzenz wird nicht unterstützt
  • Für nichts zu empfehlen

JPG:

  • Verlustbehaftete Kompression.
  • Der Verlustbetrag kann festgelegt werden, z. B. beim Erstellen einer Grafik und Speichern in Photoshop.
  • Speichern in höherer Qualität bedeutet weniger Farb- / Tiefenverlust und hohe Dateigröße und umgekehrt.
  • Transparenz / Transluzenz wird nicht unterstützt
  • Empfohlen für Fotos, nicht für Grafiken / Icons

PNG:

  • Verlustfreie Komprimierung (ja, das Beste aus beiden Wörtern / Welten)
  • Unterstützt Transparenz UND Transluzenz, beide sind unterschiedlich
  • Empfohlen für statische Grafiken / Symbole, nicht für Fotos

GIF:

  • Unterstützt Transparenz, aber keine Transluzenz
  • Empfohlen nur für ANIMIERTE Grafiken / Symbole
  • Vielleicht sind die bewegten Fotos in Bildern in Harry Potter GIFs: D

1
Schöner Überblick. Aber warum wird BMP in der Tabelle als "verlustfrei: falsch" markiert? Im Text stellst du IMHO richtig fest, dass BMP in der Tat verlustfrei ist .
mpy

2
Ich weiß, dass dies ein alter Thread ist, und danke Ihnen für die Antwort, aber beachten Sie, dass BMP optional mit einer sehr simplen, verlustfreien RLE-Komprimierung komprimiert wird.
ysap

Gibt es einen anderen Grund, warum PNG NICHT für Fotos empfohlen wird, abgesehen von der im Vergleich zu JPEG größeren Dateigröße? Ich habe meine alten Fotos zuerst im JPEG-Format gescannt und sie dann später in PNG erneut gescannt, nachdem mir klar wurde, dass ich ein Foto gescannt habe, das in einem verlustbehafteten Format gespeichert werden würde.
JAT86

4

BMP verwendet entweder Rohbits mit einem kleinen Header oder die Lauflängencodierung . JPEG verwendet die diskrete Cosinustransformation . Weitere Informationen zu Komprimierungs- / Codierungsalgorithmen finden Sie im Block unten in den Wikipedia-Artikeln.


Mir gefällt die PCX. Vor langer Zeit, als ich Assembler lernen wollte, schrieb ich für mein erstes Programm einen PCX-Viewer. Es war ziemlich lehrreich. (Ich habe keinen JPG-Viewer geschrieben). :-D
Synetech

3

Einfache Anleitung:

  • Verwenden Sie für Fotos:
    • Kameraspezifische Rohformate, wenn Sie über professionelles Equipment verfügen und viel nachbearbeiten möchten
    • Andernfalls JPEG (zum Veröffentlichen von Fotos im Web müssen Sie auch die Rohformate in JPEG konvertieren)
  • Für alles mit scharfen Kanten, feinen Linien und wenigen Farben (wie Screenshots oder Logos) verwenden Sie:
    • GIF, wenn Sie eine Webseite erstellen, die sehr alte Browser (hauptsächlich IE 6) unterstützen muss, oder wenn Sie einfache Animationen erstellen möchten
    • PNG anders
  • Es gibt keinen guten Grund, BMP zu verwenden, es sei denn, ein bestimmtes Programm akzeptiert keine anderen Formate.

1
IE unterstützt PNG seit Version 4.x (5 auf Mac), aber nur nicht transparentes PNG.
Arjan

1
IE6 unterstützt sogar transparentes PNG, wenn es eine GIF-ähnliche Transparenz aufweist. Nur PNG mit vollem Alpha wird nicht unterstützt.
Kornel

1
Tatsächlich wird Alpha Transparency unterstützt, sofern es sich um ein 8-Bit-PNG handelt. Seltsam, aber wahr.
Django Reinhardt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.