Des moyens de différencier les objets ImageMagick et GraphicsMagick COM?
-
26-09-2019 - |
Question
J'ai ImageMagick et GraphicsMagick tous deux installés. Je peux utiliser les deux librement à partir de la ligne de commande car ils ont des espaces de noms de commandes différents (toutes les commandes ImageMagick sont des paramètres de la gm
Commande GraphicsMagick). De la ligne de commande:
convert ...
Utilise ImageMagickgm convert ...
utilise graphicsmagick
Tout fonctionne bien. Cependant, il semble que les objets COM des deux programmes soient invoqués de manière identique:
Set img = CreateObject("ImageMagickObject.MagickImage.1")
Crée un objet ImageMagickSet img = CreateObject("ImageMagickObject.MagickImage.1")
Crée un objet GraphicsMagick ... difficile à croire, mais c'est directement à partir du graphicsmagickSimpleTest.vbs
exemple de script
Comment spécifier l'objet COM que je souhaite utiliser? Ou suis-je sans chance?
ÉDITER: Je viens de comparer les échantillons de scripts VBS qui sont inclus avec ImageMagick et GraphicsMagick, tous deux nommés Simplest.vbs. Il s'avère qu'ils ont plus en commun que le nom de fichier. Ce sont des fichiers presque identiques. Cela en soi ne signifie peut-être pas grand-chose (après tout, GM a été fourchu à partir de la messagerie instantanée), mais je commence à me demander si GraphicsMagick a vraiment un objet COM ou s'ils incluent simplement l'objet com d'imageMagick dans leur binaire Windows.
La solution
J'ai posé cette question sur la liste de diffusion GraphicsMagick: Pourquoi l'objet GraphicsMagick COM appelle-t-il ImageMagick? Voici une partie de la réponse de Bob Friesenhahn:
Je suis d'accord que c'est déroutant. GraphicsMagick propose un objet COM. L'histoire est intéressante. L'ImageMagickObject d'origine a été développé sous le projet GraphicsMagick par le même auteur que le ImageMagickObject d'origine. L'ImageMagickObject actuel a été développé sous le projet GraphicsMagick et Bill Radcliffe a conservé le nom d'origine.
Je ne suis pas au courant d'un moyen de spécifier une implémentation ImageMagickObject COM particulière si les deux sont enregistrés. Est-il même possible d'enregistrer deux objets COM sous le même nom à la fois?
En ce qui concerne la possibilité de dire laquelle est utilisée au moment de l'exécution, il semble que le passage de l'argument «-version» pourrait être utilisé pour renvoyer des informations utiles.
Si je comprends bien COM, je crois que cela signifie essentiellement que la bibliothèque a été enregistrée plus récemment - ImageMagick ou GraphicsMagick - sera celle appelée à partir du code.