X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/e1c15e98e78002475bc637d1a5848b45414b9e41..HEAD:/codec-image.inc.pl 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 => {