Любой способ провести различие между COM-объектами ImageMagick и GraphicsMagick? - PullRequest
1 голос
/ 19 ноября 2010

У меня установлены оба 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-объект я хочу использовать?Или мне не повезло?

РЕДАКТИРОВАТЬ: Я только что сравнил примеры сценариев VBS, которые включены в ImageMagick и GraphicsMagick, оба с именем SimpleTest.vbs.Оказывается, они имеют больше общего, чем имя файла.Это почти идентичные файлы.Само по себе это может не иметь большого значения (в конце концов, GM был разветвлен из IM), но я начинаю задумываться, действительно ли GraphicsMagick имеет COM-объект или они просто включают COM-объект ImageMagick в свой двоичный файл Windows.

1 Ответ

1 голос
/ 22 ноября 2010

Я задал этот вопрос в списке рассылки GraphicsMagick: Почему COM-объект GraphicsMagick называется ImageMagick? Вот часть ответа Боба Фризенхана:

Я согласен, что это сбивает с толку,GraphicsMagick предлагает COM-объект.История интересная.Оригинальный ImageMagickObject был разработан в рамках проекта GraphicsMagick тем же автором, что и оригинальный ImageMagickObject.Текущий ImageMagickObject был разработан в рамках проекта GraphicsMagick, и Билл Рэдклифф сохранил исходное имя.

Мне неизвестен способ указать использование конкретной реализации COM ImageMagickObject, если оба зарегистрированы.Можно ли даже зарегистрировать два COM-объекта под одним и тем же именем одновременно?

Поскольку можно определить, какой из них используется во время выполнения, кажется, что передача аргумента '-version' может бытьиспользуется для возврата некоторой полезной информации.

Если я правильно понимаю COM, я считаю, что это, в основном, означает, что любая библиотека, зарегистрированная в последнее время - ImageMagick или GraphicsMagick - будет вызываться из кода..

...