git.shiar.nl
/
sheet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
codec: gif format (best effort comparison)
[sheet.git]
/
codec.inc.pl
diff --git
a/codec.inc.pl
b/codec.inc.pl
index 925c2fe54f5b0e6b286b263e095b67ca9a49ea4f..6b6b4e09d0e582e8370dd303b87ddc8183efeb73 100644
(file)
--- a/
codec.inc.pl
+++ b/
codec.inc.pl
@@
-5,6
+5,10
@@
codec => {
name => '<abbr title="Joint Photographic Experts Group">JPEG</abbr>',
available => 1992,
},
name => '<abbr title="Joint Photographic Experts Group">JPEG</abbr>',
available => 1992,
},
+ gif => {
+ name => '<abbr title="Graphics Interchange Format">GIF</abbr>',
+ available => 1987,
+ },
png => {
name => '<abbr title="Portable Network Graphics">PNG</abbr>',
available => 1996,
png => {
name => '<abbr title="Portable Network Graphics">PNG</abbr>',
available => 1996,
@@
-38,6
+42,7
@@
feature => {
name => 'compression (photo)',
score => {
jpeg => 3,
name => 'compression (photo)',
score => {
jpeg => 3,
+ gif => 1,
png => 1,
jp2k => 4,
webp => 3,
png => 1,
jp2k => 4,
webp => 3,
@@
-49,15
+54,16
@@
feature => {
},
quality_photo_1 => {
parent => 'quality_photo',
},
quality_photo_1 => {
parent => 'quality_photo',
- name => '
low fidelity
',
+ name => '
thumbnails
',
score => {
jpeg => 2,
score => {
jpeg => 2,
+ gif => 1,
png => 1,
jp2k => 3,
png => 1,
jp2k => 3,
- webp =>
3
,
+ webp =>
4
,
heic => 5,
avif => 5,
heic => 5,
avif => 5,
- jxl =>
4
,
+ jxl =>
3
,
},
},
quality_photo_2 => {
},
},
quality_photo_2 => {
@@
-65,6
+71,7
@@
feature => {
name => 'medium fidelity',
score => {
jpeg => 3,
name => 'medium fidelity',
score => {
jpeg => 3,
+ gif => 1,
png => 1,
jp2k => 4,
webp => 3,
png => 1,
jp2k => 4,
webp => 3,
@@
-78,6
+85,7
@@
feature => {
name => 'high fidelity',
score => {
jpeg => 3,
name => 'high fidelity',
score => {
jpeg => 3,
+ gif => 1,
png => 2,
jp2k => 4,
webp => 2,
png => 2,
jp2k => 4,
webp => 2,
@@
-91,6
+99,7
@@
feature => {
name => 'lossless',
score => {
jpeg => 1,
name => 'lossless',
score => {
jpeg => 1,
+ gif => 1,
png => 2,
jp2k => 4,
webp => 3,
png => 2,
jp2k => 4,
webp => 3,
@@
-103,6
+112,7
@@
feature => {
name => 'compression (other images)',
score => {
jpeg => 2,
name => 'compression (other images)',
score => {
jpeg => 2,
+ gif => 1,
png => 3,
jp2k => 2,
webp => 4,
png => 3,
jp2k => 2,
webp => 4,
@@
-116,6
+126,7
@@
feature => {
name => 'lossy non-photographic',
score => {
jpeg => 2,
name => 'lossy non-photographic',
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 2,
webp => 4,
png => 3,
jp2k => 2,
webp => 4,
@@
-128,6
+139,7
@@
feature => {
name => 'lossless non-photographic',
score => {
jpeg => 1,
name => 'lossless non-photographic',
score => {
jpeg => 1,
+ gif => 1,
png => 4,
jp2k => 2,
webp => 5,
png => 4,
jp2k => 2,
webp => 5,
@@
-140,6
+152,7
@@
feature => {
name => 'mixed photo/nonphoto',
score => {
jpeg => 2,
name => 'mixed photo/nonphoto',
score => {
jpeg => 2,
+ gif => 1,
png => 2,
jp2k => 2,
webp => 3,
png => 2,
jp2k => 2,
webp => 3,
@@
-151,6
+164,7
@@
feature => {
speed => {
score => {
jpeg => 5,
speed => {
score => {
jpeg => 5,
+ gif => 4,
png => 4,
jp2k => 3,
webp => 4,
png => 4,
jp2k => 3,
webp => 4,
@@
-165,6
+179,7
@@
feature => {
name => 'single-core encode',
score => {
jpeg => 5,
name => 'single-core encode',
score => {
jpeg => 5,
+ gif => 3, # palette conversion
png => 3,
jp2k => 4,
webp => 4,
png => 3,
jp2k => 4,
webp => 4,
@@
-178,6
+193,7
@@
feature => {
name => 'single-core decode',
score => {
jpeg => 5,
name => 'single-core decode',
score => {
jpeg => 5,
+ gif => 5,
png => 5,
jp2k => 4,
webp => 5,
png => 5,
jp2k => 4,
webp => 5,
@@
-191,6
+207,7
@@
feature => {
name => 'pararellizable',
score => {
jpeg => 2,
name => 'pararellizable',
score => {
jpeg => 2,
+ gif => 2,
png => 2,
jp2k => 4,
webp => 2,
png => 2,
jp2k => 4,
webp => 2,
@@
-202,6
+219,7
@@
feature => {
limits => {
score => {
jpeg => 3,
limits => {
score => {
jpeg => 3,
+ gif => 2,
png => 4,
jp2k => 5,
webp => 2,
png => 4,
jp2k => 5,
webp => 2,
@@
-216,6
+234,7
@@
feature => {
name => 'maximum image dimensions',
score => {
jpeg => 3,
name => 'maximum image dimensions',
score => {
jpeg => 3,
+ gif => 3,
png => 4,
jp2k => 5,
webp => 1,
png => 4,
jp2k => 5,
webp => 1,
@@
-225,6
+244,7
@@
feature => {
},
data => {
jpeg => '65k²', # 2**16
},
data => {
jpeg => '65k²', # 2**16
+ gif => '65k²', # 2**16
png => '2G²', # 2**31
jp2k => '4G²', # 2**32
webp => '16k²', # 2**14
png => '2G²', # 2**31
jp2k => '4G²', # 2**32
webp => '16k²', # 2**14
@@
-238,6
+258,7
@@
feature => {
name => 'precision (max. bit depth)',
score => {
jpeg => 2,
name => 'precision (max. bit depth)',
score => {
jpeg => 2,
+ gif => 2,
png => 4,
jp2k => 5,
webp => 2,
png => 4,
jp2k => 5,
webp => 2,
@@
-247,6
+268,7
@@
feature => {
},
data => {
jpeg => 8,
},
data => {
jpeg => 8,
+ gif => 8,
png => 16,
jp2k => 38,
webp => 8,
png => 16,
jp2k => 38,
webp => 8,
@@
-260,6
+282,7
@@
feature => {
name => 'can do (lossy) 4:4:4',
score => {
jpeg => 'y',
name => 'can do (lossy) 4:4:4',
score => {
jpeg => 'y',
+ gif => 'y',
png => 'y',
jp2k => 'y',
webp => 'n',
png => 'y',
jp2k => 'y',
webp => 'n',
@@
-273,6
+296,7
@@
feature => {
name => 'wide gamut/HDR',
score => {
jpeg => 'n',
name => 'wide gamut/HDR',
score => {
jpeg => 'n',
+ gif => 'n',
png => 'y',
jp2k => 'y',
webp => 'n',
png => 'y',
jp2k => 'y',
webp => 'n',
@@
-286,6
+310,7
@@
feature => {
name => 'maximum number of channels',
score => {
jpeg => 2,
name => 'maximum number of channels',
score => {
jpeg => 2,
+ gif => 1,
png => 2,
jp2k => 5,
webp => 2,
png => 2,
jp2k => 5,
webp => 2,
@@
-295,6
+320,7
@@
feature => {
},
data => {
jpeg => 4, # cmyk
},
data => {
jpeg => 4, # cmyk
+ gif => 3,
png => 4, # cmyk
jp2k => 2**15,
webp => 4,
png => 4, # cmyk
jp2k => 2**15,
webp => 4,
@@
-306,6
+332,7
@@
feature => {
features => {
score => {
jpeg => 2,
features => {
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 4,
webp => 2,
png => 3,
jp2k => 4,
webp => 2,
@@
-320,6
+347,7
@@
feature => {
name => 'supports animation',
score => {
jpeg => 2,
name => 'supports animation',
score => {
jpeg => 2,
+ gif => 'y',
png => 4,
jp2k => 2,
webp => 'y',
png => 4,
jp2k => 2,
webp => 'y',
@@
-338,6
+366,7
@@
feature => {
name => 'progressive decoding',
score => {
jpeg => 4,
name => 'progressive decoding',
score => {
jpeg => 4,
+ gif => 2,
png => 2,
jp2k => 5,
webp => 'n',
png => 2,
jp2k => 5,
webp => 'n',
@@
-351,6
+380,7
@@
feature => {
name => 'alpha transparency',
score => {
jpeg => 'n',
name => 'alpha transparency',
score => {
jpeg => 'n',
+ gif => 3,
png => 'y',
jp2k => 'y',
webp => 'y',
png => 'y',
jp2k => 'y',
webp => 'y',
@@
-358,12
+388,16
@@
feature => {
avif => 'y',
jxl => 'y',
},
avif => 'y',
jxl => 'y',
},
+ data => {
+ gif => '1 bit',
+ },
},
depthmap => {
parent => 'features',
name => 'depth map',
score => {
jpeg => 'n',
},
depthmap => {
parent => 'features',
name => 'depth map',
score => {
jpeg => 'n',
+ gif => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
@@
-374,9
+408,10
@@
feature => {
},
overlays => {
parent => 'features',
},
overlays => {
parent => 'features',
- name => 'overlays',
+ name => 'overlays
(layers)
',
score => {
jpeg => 'n',
score => {
jpeg => 'n',
+ gif => 'y',
png => 'n',
jp2k => 'n',
webp => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
@@
-390,6
+425,7
@@
feature => {
name => 'authoring workflow suitability',
score => {
jpeg => 2,
name => 'authoring workflow suitability',
score => {
jpeg => 2,
+ gif => 2,
png => 3,
jp2k => 3,
webp => 2,
png => 3,
jp2k => 3,
webp => 2,
@@
-403,7
+439,8
@@
feature => {
name => 'generation loss resilience',
score => {
jpeg => 4,
name => 'generation loss resilience',
score => {
jpeg => 4,
- png => 'n/a',
+ png => 0,
+ gif => 0,
jp2k => 3,
webp => 2,
heic => 3,
jp2k => 3,
webp => 2,
heic => 3,
@@
-411,6
+448,7
@@
feature => {
jxl => 4,
},
data => {
jxl => 4,
},
data => {
+ gif => 'n/a',
png => 'n/a',
},
},
png => 'n/a',
},
},
@@
-419,6
+457,7
@@
feature => {
name => 'lossless JPEG recompression',
score => {
jpeg => 0,
name => 'lossless JPEG recompression',
score => {
jpeg => 0,
+ gif => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
png => 'n',
jp2k => 'n',
webp => 'n',
@@
-434,8
+473,8
@@
feature => {
name => 'royalty-free',
score => {
jpeg => 5,
name => 'royalty-free',
score => {
jpeg => 5,
- png => 5,
gif => 5, # patents expired
gif => 5, # patents expired
+ png => 5,
jp2k => 3, # specs not freely available
webp => 4, # submarine risk
heic => 'n', # patents enforced
jp2k => 3, # specs not freely available
webp => 4, # submarine risk
heic => 'n', # patents enforced