Voting

: zero plus five?
(Example: nine)

The Note You're Voting On

sageptr at gmail dot com
3 years ago
Because gd and imagick do not support animated PNG (at this moment), i wrote a simple function to determine if given PNG is APNG or not. It does not validate PNG, only checks whenever "acTL" chunk appears before "IDAT" like the specification says: https://wiki.mozilla.org/APNG_Specification

<?php

function is_apng(string $filename): bool
{
$f = new \SplFileObject($filename, 'rb');
$header = $f->fread(8);
if (
$header !== "\x89PNG\r\n\x1A\n") {
return
false;
}
while (!
$f->eof()) {
$bytes = $f->fread(4);
if (
strlen($bytes) < 4) {
return
false;
}
$length = unpack('N', $bytes)[1];
$chunkname = $f->fread(4);
switch (
$chunkname) {
case
'acTL':
return
true;
case
'IDAT':
return
false;
}
$f->fseek($length + 4, SEEK_CUR);
}
return
false;
}

?>

<< Back to user notes page

To Top