convert and mogrify: The correct way to use them in modern versions of ImageMagick

自作多情 提交于 2020-05-13 15:27:08

问题


To create an image thumbnail using an older version of ImageMagick, it was possible in the following ways:

(To aid in futher referencing, examples are numbered.)

1. convert.exe image.jpg -thumbnail 100x100 ./converted/converted_image.jpg
2. mogrify.exe -thumbnail 100x100 -path ./converted image.png

Now I have ImageMagick 7 (downloaded just yesterday), and during installation I intentionally turned "Install legacy utilities (e.g. convert.exe)" checkbox off. That is, I have only one utility in my ImageMagick directory: magick.exe.

I'm trying to understand what is the correct and future-proof way to perform above-mentioned operations according to modern ImageMagick versions.

A quote from https://imagemagick.org/script/porting.php#cli:

animate, compare, composite, conjure, convert, display, identify, import, mogrify, montage, stream

To reduce the footprint of the command-line utilities, these utilities are symbolic links to the magick utility. You can also invoke them from the magick utility, for example, use magick convert logo: logo.png to invoke the magick utility.

In the same source:

With the IMv7 parser, activated by the magick utility, settings are applied to each image in memory in turn (if any). While an option: only need to be applied once globally. Using the other utilities directly, or as an argument to the magick CLI (e.g. magick convert) utilizes the legacy parser.

Hmm...

Works:

3. magick.exe convert image.jpg -thumbnail 100x100 ./converted/converted_image.jpg
4. magick.exe mogrify -thumbnail 100x100 -path ./converted image.png

Still works (the same way as magick.exe convert):

5. magick.exe image.jpg -thumbnail 100x100 ./converted/converted_image.jpg

However, the following one doesn't work (expected: should work the same way as magick.exe mogrify):

6. magick.exe -thumbnail 100x100 -path ./converted image.png

My question is: Which syntax should I use for convert and for mogrify? 3 and 4, or 4 and 5, or something different?


回答1:


AFAIK, and I am happy to add any corrections suggested, it works like this.

The first idea is that you should use version 7 if possible and all the old v6 commands, WITH THE EXCEPTION OF convert should be prefixed with magick. That means you should use these

magick ...                # in place of `convert`
magick identify ...       # in place of `identify`
magick mogrify ...        # in place of `mogrify`
magick compare ...        # in place of `compare`
magick compose ...        # in place of `compose`

If you use magick convert you will get old v6 behaviour, so you want to avoid that!

Furthermore, v7 is more picky about the ordering. You must specify the image you want something done to before doing it. That means old v6 commands like:

convert -trim -resize 80% input.jpg output.jpg

must now become:

magick input.jpg -trim -resize 80% output.jpg     # magick INPUT operations OUTPUT

So, looking specifically at your numbered examples:

  1. Should become:

    magick image.jpg -thumbnail 100x100 ./converted/converted_image.jpg

  2. Should become:

    magick mogrify -thumbnail 100x100 -path ./converted image.png

  3. invokes old v6 behaviour because you use magick convert instead of plain magick, and should be avoided

  4. Is correct, modern syntax

  5. Is correct, modern syntax

  6. Looks like you meant magick mogrify because you didn't give input and output filenames and because you use -path, but it looks like you accidentally omitted mogrify. If you didn't accidentally omit mogrify, then you probably meant to use the old convert-style command, and need an input and an output file and you need to specify the input file before the -thumbnail.



来源:https://stackoverflow.com/questions/61205784/convert-and-mogrify-the-correct-way-to-use-them-in-modern-versions-of-imagemagi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!