我安装了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对象。
答案 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 - 将是从代码中调用的库。