Pregunta

Tengo ImageMagick y GraphicsMagick instalados. Puedo usar ambos libremente desde la línea de comando porque tienen diferentes espacios de nombres de comandos (todos los comandos de ImageMagick son parámetros para el gm Comando GraphicsMagick). Desde la línea de comando:

  • convert ... usa imagemagick
  • gm convert ... Utiliza GraphicsMagick

Todo eso funciona bien. Sin embargo, parece que los objetos COM de ambos programas se invocan de manera idéntica:

  • Set img = CreateObject("ImageMagickObject.MagickImage.1") crea un objeto ImageMagick
  • Set img = CreateObject("ImageMagickObject.MagickImage.1") crea un objeto de graphicsmagick ... difícil de creer, pero esto es directo de lamagia gráfica SimpleTest.vbs Muestra de guión

¿Cómo especifico qué objeto COM quiero usar? ¿O no tengo suerte?

EDITAR: Acabo de comparar los scripts de VBS de muestra que se incluyen con ImageMagick y GraphicsMagick, ambos llamados simpletest.vbs. Resulta que tienen más en común que el nombre de archivo. Son archivos casi idénticos. Esto en sí mismo puede no significar mucho (después de todo, GM fue bifurcado de IM), pero estoy empezando a preguntarme si GraphicsMagick realmente tiene un objeto COM o si solo incluyen el objeto COM de ImageMagick en su binario de Windows.

¿Fue útil?

Solución

Hice esta pregunta en la lista de correo de GraphicsMagick: ¿Por qué el objeto GraphicsMagick com se llama ImageMagick? Aquí está parte de la respuesta de Bob Friesenhahn:

Estoy de acuerdo en que es confuso. GraphicsMagick ofrece un objeto COM. La historia es interesante. El mismo autor desarrolló el proyecto original ImageMagickObject en el proyecto GraphicsMagick. El actual ImageMagickObject se desarrolló en el proyecto GraphicsMagick y Bill Radcliffe retuvo el nombre original.

No soy consciente de una forma de especificar el uso de una implementación particular de ImageMagickObject Com si ambos están registrados. ¿Es posible registrar dos objetos COM bajo el mismo nombre a la vez?

En cuanto a poder saber cuál se usa en el momento de ejecución, parece que aprobar el argumento '-versión' podría usarse para devolver alguna información útil.

Si entiendo COM correctamente, creo que esto básicamente significa que cualquier biblioteca se registró más recientemente, Imagemagick o GraphicsMagick, será el llamado desde el código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top