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

发布于 2024-10-03 14:45:27 字数 852 浏览 8 评论 0原文

我安装了 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 对象。

I have ImageMagick and GraphicsMagick both installed. I can use both freely from the command line because they have different command namespaces (all of the ImageMagick commands are parameters to the gm GraphicsMagick command). From the command line:

  • convert ... uses ImageMagick
  • gm convert ... uses GraphicsMagick

That all works fine. However, it appears that both programs' COM objects are invoked identically:

  • Set img = CreateObject("ImageMagickObject.MagickImage.1") creates an ImageMagick object
  • Set img = CreateObject("ImageMagickObject.MagickImage.1") creates a GraphicsMagick object... hard to believe, but this is straight from the GraphicsMagick SimpleTest.vbs sample script

How do I specify which COM object I want to use? Or am I out of luck?

EDIT: I just compared the sample VBS scripts that are included with ImageMagick and GraphicsMagick, both named SimpleTest.vbs. Turns out they have more in common than the filename. They are nearly identical files. This in itself may not mean much (after all, GM was forked from IM), but I'm starting to wonder whether GraphicsMagick really has a COM object at all or whether they are just including ImageMagick's COM object in their Windows binary.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

合久必婚 2024-10-10 14:45:27

我在 GraphicsMagick 邮件列表上提出了这个问题: 为什么 GraphicsMagick COM 对象称为 ImageMagick? 以下是 Bob Friesenhahn 的部分回复:

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

我不知道如何指定
使用特定的 ImageMagickObject
COM 实现(如果两者都是)
挂号的。是否有可能
下注册两个COM对象
一次同名?

只要能够分辨出是哪一个
在运行时使用,看起来
传递参数“-version”可能
用于返回一些有用的信息。

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

I asked this question on the GraphicsMagick mailing list: Why is the GraphicsMagick COM object called ImageMagick? Here is part of Bob Friesenhahn's response:

I agree it is confusing.
GraphicsMagick does offer a COM
object. The history is interesting.
The original ImageMagickObject was
developed under the GraphicsMagick
project by the same author as the
original ImageMagickObject. The
current ImageMagickObject was
developed under the GraphicsMagick
project and Bill Radcliffe retained
the original name.

I am not aware of a way to specify
using a particular ImageMagickObject
COM implementation if both are
registered. Is it even possible to
register two COM objects under the
same name at once?

As far as being able to tell which one
is in use at run time, it seems that
passing the argument '-version' might
be used to return some useful info.

If I understand COM correctly, I believe this basically means that whichever library was registered most recently--ImageMagick or GraphicsMagick--will be the one called from within the code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文