set the file type parameter after reading the image
authorchrysn <chrysn@fsfe.org>
Mon, 7 Apr 2014 09:15:51 +0000 (11:15 +0200)
committerchrysn <chrysn@fsfe.org>
Mon, 7 Apr 2014 09:15:51 +0000 (11:15 +0200)
imagemagick, when reading an image, sets its magick parameter to
indicate the file type, overriding the explicitly set file type for
output if it is set at creation.

as a result, previously (with graphicsmagick-libmagick-dev-compat
1.3.18-1 providing Image::Magick), svg output files were not png,
neither svg, but mvg (imagemagick vector graphics).

IkiWiki/Plugin/img.pm

index b92e24cc06fb93d8d88adcf1517903e46e49dc25..c861d707527df787de6224a82704a7805a576568 100644 (file)
@@ -68,7 +68,7 @@ sub preprocess (@) {
 
        eval q{use Image::Magick};
        error gettext("Image::Magick is not installed") if $@;
-       my $im = Image::Magick->new($issvg ? (magick => "png") : ());
+       my $im = Image::Magick->new();
        my $imglink;
        my $r = $im->Read($srcfile);
        error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r;
@@ -124,6 +124,7 @@ sub preprocess (@) {
                                # don't actually write resized file in preview mode;
                                # rely on width and height settings
                                if (! $params{preview}) {
+                                       $im->set($issvg ? (magick => 'png') : ());
                                        my @blob = $im->ImageToBlob();
                                        writefile($imglink, $config{destdir}, $blob[0], 1);
                                }