X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/e1c15e98e78002475bc637d1a5848b45414b9e41..133e96335267b12bb7e97d9bbe551a3a043bd32a:/codec-image.inc.pl?ds=inline
diff --git a/codec-image.inc.pl b/codec-image.inc.pl
index 92e17d5..6c138ab 100644
--- a/codec-image.inc.pl
+++ b/codec-image.inc.pl
@@ -1,46 +1,57 @@
use utf8;
+{
+intro => 'Comparison of image encoding formats, based on Cloudinary research.',
+keywords => [qw( image picture codec encoder encoding decode compression file format type mime )],
codec => {
jpeg => {
name => 'JPEG',
available => 1992,
+ generation => 0,
},
gif => {
name => 'GIF',
available => 1987,
+ generation => 0,
},
png => {
name => 'PNG',
available => 1996,
+ generation => 1,
},
jp2k => {
name => 'JPEG 2000',
available => 2000,
+ generation => 1,
},
webp => {
name => 'WebP',
available => 2010,
+ generation => 1,
},
heic => {
name => 'HEIC',
available => 2015,
+ generation => 2,
},
avif => {
name => 'AVIF',
available => 2019,
+ generation => 2,
},
jxl => {
name => 'JPEG XL',
available => 2021,
+ generation => 2,
},
pnm => {
name => 'PNM',
available => 1988,
+ generation => 0,
},
},
feature => {
default => {
- children => [qw( quality_photo quality_art speed limits features royalties overhead support )],
+ children => [qw( quality_photo quality_art speed limits features royalties overhead support web )],
},
quality_photo => {
name => 'compression (photo)',
@@ -55,11 +66,26 @@ feature => {
avif => 5,
jxl => 5,
},
- children => [qw( quality_photo_1 quality_photo_2 quality_photo_3 quality_photo_ll )],
+ children => [qw( quality_photo_ll quality_photo_3 quality_photo_2 quality_photo_1 quality_thumbs )],
},
- quality_photo_1 => {
+ quality_thumbs => {
parent => 'quality_photo',
name => 'thumbnails',
+ score => {
+ jpeg => 1,
+ pnm => 1,
+ gif => 2,
+ png => 3,
+ jp2k => 1,
+ webp => 2,
+ heic => 4,
+ avif => 4,
+ jxl => 3,
+ },
+ },
+ quality_photo_1 => {
+ parent => 'quality_photo',
+ name => 'low fidelity',
score => {
jpeg => 2,
pnm => 1,
@@ -113,7 +139,7 @@ feature => {
jp2k => 4,
webp => 3,
heic => 3,
- avif => 3,
+ avif => 2,
jxl => 5,
},
},
@@ -334,7 +360,7 @@ feature => {
avif => 4,
jxl => 5,
},
- children => [qw( animation progressive alpha depthmap overlays authoring reencode compat_jpeg )],
+ children => [qw( animation progressive alpha depthmap overlays vector authoring reencode compat_jpeg )],
},
animation => {
parent => 'features',
@@ -366,6 +392,21 @@ feature => {
jxl => 5,
},
},
+ vector => {
+ parent => 'features',
+ name => 'vector drawing',
+ score => {
+ jpeg => 'n',
+ pnm => 'n',
+ gif => 'n',
+ png => 'n',
+ jp2k => 'n',
+ webp => 'n',
+ heic => 'n',
+ avif => 'n',
+ jxl => [2, undef, 'splines'],
+ },
+ },
alpha => {
parent => 'features',
name => 'alpha transparency',
@@ -471,17 +512,33 @@ feature => {
},
children => [],
},
+ web => {
+ name => 'browser support',
+ score => {
+ jpeg => [5, undef, 'ubiquitous since first inline images (1993)'],
+ pnm => [1, undef, 'rarely by (unix) systems'],
+ xbm => [2, undef, 'common before 200X'],
+ gif => [5, undef, 'predates the web, but unrestricted since 2004'],
+ png => [5, undef, 'problematic prior to IE7, currently ubiquitous'],
+ jp2k => [2, undef, 'just Safari'],
+ webp => [4, undef, 'widespread since 2020'],
+ heic => [1, undef, 'no browser support'],
+ avif => [3, undef, 'significant since 2021 (Safari 2023, no Edge yet)'],
+ jxl => [2, undef, 'experimental, blocked by chrome'],
+ },
+ },
support => {
+ name => 'adoption',
score => {
- jpeg => 5,
- pnm => [2, undef],
- gif => 5,
- png => 5,
- jp2k => [2, undef, 'Apple only'],
- webp => [4, undef, 'modern browsers'],
- heic => [1, undef, 'stored by latest cameras, no browser support'],
- avif => [3, undef, 'all modern browsers except Safari and Edge'],
- jxl => [2, undef, 'upcoming in most browsers'],
+ jpeg => [5, undef, 'standard photography'],
+ pnm => [2, undef, 'uncomplicated bitmap interchange'],
+ gif => [4, undef, 'declining due to limitations'],
+ png => [5, undef, 'standard illustrations'],
+ jp2k => [3, undef, 'limited beyond Apple'],
+ webp => [4, undef, 'mostly online'],
+ heic => [2, undef, 'stored by latest cameras, interchange unlikely'],
+ avif => [3, undef, 'upcoming'],
+ jxl => [2, undef, 'ongoing'],
},
},
overhead => {