有什么方法可以区分ImageMagick和GraphicsMagick COM对象?

时间:2010-11-19 20:48:18

标签: com imagemagick graphicsmagick

我安装了ImageMagick和GraphicsMagick。我可以在命令行中自由使用它们,因为它们具有不同的命令名称空间(所有ImageMagick命令都是gm GraphicsMagick命令的参数)。从命令行:

  • convert ...使用ImageMagick
  • gm convert ...使用GraphicsMagick

一切正常。但是,似乎两个程序的COM对象都被相同地调用:

  • Set img = CreateObject("ImageMagickObject.MagickImage.1")创建一个ImageMagick对象
  • Set img = CreateObject("ImageMagickObject.MagickImage.1")创建了一个GraphicsMagick对象......很难相信,但这可以直接来自GraphicsMagick SimpleTest.vbs示例脚本

如何指定要使用的COM对象?或者我运气不好?

编辑:我刚刚比较了ImageMagick和GraphicsMagick中包含的示例VBS脚本,两者都名为SimpleTest.vbs。事实证明,他们有比文件名更多的共同点。它们几乎是相同的文件。这本身可能没什么意义(毕竟,GM是从IM分叉的),但我开始怀疑GraphicsMagick是否真的有一个COM对象,或者他们是否只是在他们的Windows二进制文件中包含ImageMagick的COM对象。

1 个答案:

答案 0 :(得分:1)

我在GraphicsMagick邮件列表上问过这个问题:Why is the GraphicsMagick COM object called ImageMagick?以下是Bob Friesenhahn回复的一部分:

  

我同意这令人困惑。   GraphicsMagick确实提供了COM   宾语。历史很有趣。   最初的ImageMagickObject是   在GraphicsMagick下开发   由同一作者的项目   原始的ImageMagickObject。该   当前的ImageMagickObject是   在GraphicsMagick下开发   项目和比尔拉德克利夫保留   原来的名字。

     

我不知道指定的方法   使用特定的ImageMagickObject   如果两者都是COM实现   注册。甚至可能   在下面注册两个COM对象   同一个名字?

     

至于能分辨出哪一个   在运行时使用,似乎   传递参数'-version'可能   用于返回一些有用的信息。

如果我正确理解COM,我相信这基本上意味着最近注册的库 - ImageMagick或GraphicsMagick - 将是从代码中调用的库。