有什么方法可以区分ImageMagick和GraphicsMagick com对象?
-
26-09-2019 - |
题
我已经安装了ImageMagick和GraphicsMagick。我可以从命令行免费使用两者,因为它们具有不同的命令名称空间(所有成像命令都是到达的参数 gm
GraphicsMagick命令)。从命令行:
convert ...
使用ImageMagickgm convert ...
使用GraphicsMagick
一切都很好。但是,看来两个程序的com对象都被相同调用:
Set img = CreateObject("ImageMagickObject.MagickImage.1")
创建一个成像对象Set img = CreateObject("ImageMagickObject.MagickImage.1")
创建一个GraphicsMagick对象...难以置信,但这是直接从GraphicsMagickSimpleTest.vbs
示例脚本
如何指定要使用的com对象?还是我不幸?
编辑: 我只是比较了ImageMagick和GraphicsMagick包含的示例VBS脚本,均为SimpleTest.vbs。事实证明,它们比文件名更具共同点。它们几乎是相同的文件。这本身可能并不意味着太多(毕竟,通用汽车是从IM分叉的),但是我开始怀疑GraphicsMagick是否真的有一个COM对象,或者它们是否只是将ImageMagick的COM对象包括在Windows二进制中。
解决方案
我在GraphicsMagick邮件列表上问了这个问题: 为什么GraphicsMagick com对象称为ImageMagick? 这是鲍勃·弗里森哈恩(Bob Friesenhahn)的回应的一部分:
我同意这很困惑。 GraphicsMagick确实提供了一个com对象。历史很有趣。原始的ImageMagickobject是在GraphicsMagick Project下与原始ImageMagickobject一起开发的。当前的ImageMagickObject是在GraphicsMagick项目下开发的,而Bill Radcliffe保留了原始名称。
如果两者都注册,我不知道一种使用特定的ImageMagickobject com实现的方法。甚至可以一次以同名注册两个COM对象?
至于能够在运行时使用哪一个,似乎可以使用参数“ version”来返回一些有用的信息。
如果我正确理解com,我相信这基本上意味着最近注册的任何库(agagemagick或graphicsmagick)将是代码中调用的库。