$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;
my $extension;
my $format;
- if ($base =~ m/\.([a-z0-9]+)$/) {
+ if ($base =~ m/\.([a-z0-9]+)$/is) {
$extension = $1;
}
else {
}
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");
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);
}