Eine Möglichkeit, zwischen ImageMagick und GraphicsMagick COM -Objekten zu unterscheiden?

StackOverflow https://stackoverflow.com/questions/4229233

  •  26-09-2019
  •  | 
  •  

Frage

Ich habe Imagemagick und GraphicsMagick beide installiert. Ich kann beide frei von der Befehlszeile verwenden, da sie unterschiedliche Befehlsnamespaces haben (alle ImageMagick -Befehle sind Parameter für die gm Grafikmagick -Befehl). Aus der Befehlszeile:

  • convert ... verwendet Imagemagick
  • gm convert ... Verwendet GraphicsMagick

Das alles funktioniert gut. Es scheint jedoch, dass die COM -Objekte beider Programme identisch aufgerufen werden:

  • Set img = CreateObject("ImageMagickObject.MagickImage.1") erstellt ein ImageMagick -Objekt
  • Set img = CreateObject("ImageMagickObject.MagickImage.1") Erstellt ein Grafikmagick -Objekt ... kaum zu glauben, aber dies ist direkt aus dem GraphicsMagick SimpleTest.vbs Beispielskript

Wie lege ich an, welches COM -Objekt ich verwenden möchte? Oder bin ich aus Glück?

BEARBEITEN: Ich habe gerade die Beispiel -VBS -Skripte verglichen, die im Bildemagick und GraphicsMagick, beide Simpleetest.vbs, enthalten sind. Es stellt sich heraus, dass sie mehr gemeinsam haben als der Dateiname. Sie sind fast identische Dateien. Dies bedeutet vielleicht nicht viel (schließlich wurde GM von IM gegabelt), aber ich frage mich, ob GraphicsMagick wirklich überhaupt ein COM -Objekt hat oder ob sie nur ImageMagicks COM -Objekt in ihre Windows Binary einbeziehen.

War es hilfreich?

Lösung

Ich habe diese Frage in der GraphicsMagick -Mailingliste gestellt: Warum wird das Com -Objekt von GraphicsMagick ImageMagick genannt? Hier ist Teil von Bob Friesenhahns Antwort:

Ich stimme zu, dass es verwirrend ist. GraphicsMagick bietet ein COM -Objekt. Die Geschichte ist interessant. Das ursprüngliche ImagemagickObject wurde unter dem GraphicsMagick -Projekt desselben Autors wie das ursprüngliche ImagemagickObject entwickelt. Das aktuelle ImagemagickObject wurde im Rahmen des GraphicsMagick -Projekts entwickelt, und Bill Radcliffe behielt den ursprünglichen Namen bei.

Mir ist nicht bekannt, wie ich eine bestimmte Implementierung von ImageMagickObject angeben kann, wenn beide registriert sind. Ist es überhaupt möglich, zwei COM -Objekte gleichzeitig unter demselben Namen zu registrieren?

Soweit es in der Lage ist zu sagen, welches zur Laufzeit verwendet wird, scheint es, dass das Übergeben des Arguments '-version' verwendet werden könnte, um einige nützliche Informationen zurückzugeben.

Wenn ich COM richtig verstehe, glaube ich, dass dies im Grunde genommen bedeutet, dass die Bibliothek zuletzt registriert war-IMAGEMAGICK oder GRAPHICSMAGICK-wird derjenige sein, der aus dem Code ausgerufen wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top