首页 > 代码库 > ImageMagick命令工具的执行路径思考

ImageMagick命令工具的执行路径思考

此文为论坛内容转述

原帖地址:https://www.imagemagick.org/discourse-server/viewtopic.php?t=20542

技术分享

1. utilities/convert.c中的main函数在IMv7中已经在主流程的utilities/magick.c中被废弃掉了

2. 实际上这个命令调用了一个wrapper函数MagickCommandGenesis(),这个打包函数能够处理诸如“-resize -bench"这样的选项,然后这个函数将清洗好的选项参数给到处理请求的真正函数里面,这个函数往往是作为MagickCommandGenesis()函数的一个参数

3. 对于convert命令来说这个实际的函数就是ConvertImageCommand(),它位于”wand/convert.c",这个函数真正来理解这些参数数组到底需要干嘛

4. 这个函数的大部分内容复杂且对高版本用户来说无用,大部分代码需要做参数check以及对IMv5内容的处理。真正的在IMv6版本中的处理是由 "wand/mogrify.c" 中的函数处理的,这个函数由FireImageStack() 宏来调用

5. IMv7更加直接, 没有macro代码,首先在"MagicWand/magick-cli.c"进行参数处理,然后调用ProcessCommandOptions() 或者ProcessScriptOptions() 处理参数选项,对应不同的选项它会调用不同的函数(位于"MagickWand/operation.c"中)来处理对应的选项。

6. IMv7的选项处理未来将会替代IMv6的模式,magick命令也将取代convert

 

ImageMagick命令工具的执行路径思考