X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/984ba82f1bea778de8d2b98593b470d651749d73..4f0b10c13d8d85e6ad1818f5ada84477f43df43a:/IkiWiki/Plugin/img.pm diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index 494fe2335..b85824345 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -39,7 +39,7 @@ sub allowed { $allowed = ['jpeg', 'png', 'gif', 'svg'] unless defined $allowed && @$allowed; foreach my $a (@$allowed) { - return 1 if $a eq $format || $a eq 'everything'; + return 1 if lc($a) eq $format || lc($a) eq 'everything'; } return 0; @@ -89,7 +89,7 @@ sub preprocess (@) { my $extension; my $format; - if ($base =~ m/\.([a-z0-9]+)$/) { + if ($base =~ m/\.([a-z0-9]+)$/is) { $extension = $1; } else { @@ -125,7 +125,14 @@ sub preprocess (@) { } else { # allow ImageMagick to auto-detect (potentially dangerous) - $format = ''; + my $im = Image::Magick->new(); + my $r = $im->Ping(file => $in); + if ($r) { + $format = lc $r; + } + else { + error sprintf(gettext("failed to determine format of %s"), $file); + } } error sprintf(gettext("%s image processing disabled in img_allowed_formats configuration"), $format ? $format : "\"$extension\"") unless allowed($format ? $format : "everything"); @@ -174,6 +181,12 @@ sub preprocess (@) { my $r = $im->Read("$format:$srcfile\[$pagenumber]"); error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r; + if ($config{deterministic}) { + $im->Set('date:create' => 0); + $im->Set('date:modify' => 0); + $im->Set('option' => 'png:exclude-chunk=time'); + } + if (! defined $im->Get("width") || ! defined $im->Get("height")) { error sprintf(gettext("failed to get dimensions of %s"), $file); }