Pergunta

Eu tenho ImageMagick e GraphicsMagick ambos instalados. Eu posso usar os dois livremente da linha de comando porque eles têm namespaces de comando diferentes (todos os comandos do imagemagick são parâmetros para o gm Comando GraphicsMagick). Da linha de comando:

  • convert ... usa o imagemagick
  • gm convert ... usa GraphicsMagick

Tudo isso funciona bem. No entanto, parece que os objetos COM de ambos os programas são invocados de forma idêntica:

  • Set img = CreateObject("ImageMagickObject.MagickImage.1") Cria um objeto ImageMagick
  • Set img = CreateObject("ImageMagickObject.MagickImage.1") Cria um objeto GraphicsMagick ... difícil de acreditar, mas isso é direto do GraphicsMagick SimpleTest.vbs amostra script

Como especificar qual objeto COM eu quero usar? Ou estou sem sorte?

EDITAR: Acabei de comparar os scripts de amostra VBS incluídos com ImageMagick e GraphicsMagick, ambos nomeados simplicos.vbs. Acontece que eles têm mais em comum do que o nome do arquivo. São arquivos quase idênticos. Isso por si só pode não significar muito (afinal, a GM foi bifurcada no IM), mas estou começando a me perguntar se o GraphicsMagick realmente tem um objeto COM ou se eles estão apenas incluindo o objeto COM do ImageMagick em seu binário do Windows.

Foi útil?

Solução

Eu fiz essa pergunta na lista de discussão GraphicsMagick: Por que o objeto GraphicsMagick Com chamado ImageMagick? Aqui está parte da resposta de Bob Frienhahn:

Eu concordo que é confuso. GraphicsMagick oferece um objeto COM. A história é interessante. O ImageMagickObject original foi desenvolvido sob o projeto GraphicsMagick pelo mesmo autor que o imagemagickObject original. O atual ImageMagickObject foi desenvolvido no projeto GraphicsMagick e Bill Radcliffe manteve o nome original.

Não estou ciente de uma maneira de especificar o uso de uma implementação de ImageMagickObjecject com a implementação específica se ambos estiverem registrados. É possível registrar dois objetos COM com o mesmo nome de uma só vez?

Quanto a poder dizer qual está em uso no tempo de execução, parece que a transmissão do argumento '-version' pode ser usada para retornar algumas informações úteis.

Se eu entendo a compactação corretamente, acredito que isso basicamente significa que, qualquer que seja a biblioteca registrada mais recentemente-o Imagemagick ou o GraphicsMagick-será o chamado de dentro do código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top