imagemagick

ImageMagick argument to specify output format


I'm using ImageMagick programmatically to apply some user-defined transformations to an image. The script I'm using spawns a new process and runs ImageMagick with arguments similar to:

convert /tmp/source -resize 100x /tmp/transformed

And then it reads the transformed image back from /tmp/transformed. I'd like to add the option to convert the image to another image format, but from looking at the IM docs for a while, the only way I can see of doing that is to append the output destination with .<ext>, like this:

convert /tmp/source -resize 100x /tmp/transformed.png

Is there another way? The easiest way for me to do this with the pre-existing script is to supply an argument, but I can't find it. Something like:

convert /tmp/source -resize 100x -format png /tmp/transformed

Is this possible? Or am I stuck with having to append the extension to the output destination?


Solution

  • I'm not sure what your aversion is for appending a suffix, but another alternative to Fred's excellent suggestions is to use a "format specifier" prefix, which would leave your base filename unchanged - if that is what you are trying to achieve.

    convert Image -resize 100x PNG:/tmp/transformed/Image
    

    Substitute PNG: with GIF:, JPEG: etc to suit. See also https://stackoverflow.com/a/47397672/2836621 for more PNG options.