Utilizando a extensão Imagick do PHP no Windows

Já tive muita dificuldade para poder utilizar a extensão Imagick do PHP no Windows, pois há pouco material nacional a respeito, pelo menos não de fácil acesso.

Aparentemente é básico, porém os detalhes podem consumir horas se não for dado a devida atenção. A instalação pode se dar em 40 minutos ou em até 8 horas… ou em até nunca para os desistentes, mas não desanimem, com esse tutorial tudo será mais fácil.

Imagick é uma biblioteca do PHP muito poderosa com diversos recursos de manipulação de imagens, da mesma forma a conhecida biblioteca GD do PHP também é, mas sinto maiores facilidades para executar a manipulação de imagens utilizando Imagick, sendo assim, achei que seria válido repassar esta informação e conhecimento sobre a extensão Imagick do PHP que ainda não é tão mencionada em nosso idioma.

Parto desta base:

Apache e PHP devidamente instalados no seu Windows.

Estas 2 ferramentas acima são a base. Parece simples, mas se as versões destas não forem compatíveis umas com as outras e com a extensão que veremos mais adiante e com a API ImageMagick, necessária para tudo funcionar… da tudo errado e a dor de cabeça pode te perseguir até você conseguir ou desistir. :)

Tive muitos erros utilizando o php VC6, pois a extensão dll do Imagick para PHP VC6 além de dificil de se achar, não tem suporte a um bom tempo.
Optei pelo PHP VC9 ThreadSafe, mas aí vinha outra encrenca, pois eu queria rodar sob o Apache e não sob IIS, mas é sabido que PHP VC9 é para rodar sob o IIS e VC6 sob Apache… nada  como o Google para ajudar nesses casos, acabei descobrindo que tem o site http://www.apachelounge.com que oferece que oferece o binário Win32 do Apache que roda o PHP VC9 que é uma beleza. Problema resolvido …. anda não hehehe :)

Primeiro passo
Instale o Apache 2.2.17-win32-x86
http://www.apachelounge.com/download/

Segundo passo
Instale o PHP 5.3.x Win32 ( VC9 x86 Thread Safe – zip )
http://windows.php.net/download/

Dica: Instale individualmente cada um, pois não é difícil, da maior liberdade para atualizações individuais e ganha-se experiência.

Não abordarei procedimentos para instalar estes acima, deixarei para um outro tutorial.

Vamos começar.

Faça o download e instale um release binário windows do ImageMagick.
Eu utilizei o ImageMagick-6.6.2-6-Q16-windows-dll.exe, nem sempre o mais atual terá compatibilidade com a extensão php_imagick.dll disponível, por isso eu recomendo a versão citada acima que funcionou comigo.

-> Download do ImageMagick

Execute o setup e siga os passos NEXT, NEXT… rsrs*
Entre algumas opções que aparecerão, quando pedir para marcar alguns checkboxs, escolha principalmente a opção “Add application directory to your system path”, as demais pode deixar em branco se quiser.

Após a instalação faça um teste abrindo o prompt de comando do Windows (Iniciar + executar + digite cmd e tecle enter)

Digite os comandos:
( Obs.: não digite o que estiver comentado ‘#’ )

convert logo: logo.gif
# e tecle enter

identify logo.gif
# e tecle enter
# aparecerá informações da imagem

imdisplay logo.gif
# e tecle enter
# em instantes abrirá o logo do ImageMagick na tela

Se tudo ocorreu como descrito acima, então o Aplicativo ImageMagick foi instalado com sucesso e estamos indo muito bem.

A partir de agora já poderíamos usar o PHP e as funcionalidades do ImageMagick através de funções exec() e system(), sem precisar instalar ou configurar mais nada, mas como sei que a maioria dos servidores de hospedagem não permitem a execução destas funções por medida de segurança, então vou seguir esta linha, até porque o que nos interessa é usar a biblioteca Imagick do PHP e não comandos direto no Aplicativo.

Próximos passos importantes

Como sabem, eu já vinha citando uma tal de extensão dll, pois então… precisaremos da dll referente a extensão imagick, para poder rodar as funcionalidades da classe imagick.

Então vamos ao blog do Mikko, um dos criadores e ‘mantenedores‘ da dll, e vamos fazer o download da dll diretamente do site dele.

Lembrando qual o PHP foi instalado deveremos instalar a dll compatível.

Quando entrar no link mais abaixo, faça o download da dll apropriada conforme informo em seguida:

imagick – x86 / vc9 – ts
(2010-11-11 16:36 – php_imagick_ts.dll)
http://valokuva.org/builds/ext/vc9/ts/imagick/2010-11-11_1636/php_imagick_ts.dll

Se tentar usar uma dll não compatível com o PHP instalado ou com a versão do aplicativo  ImageMagick instalado, seria um daqueles tropeços que aumentam horas tentando fazer a instalação.

ATENÇÃO: Como já citei… as dlls para distribuições VC9 TS só funcionarão com distribuições do PHP VC9 TS, procure ter muita atenção quanto a isso.

Caso já tenha PHP e Apache instalados e utiliza uma distribuição do PHP VC6 então deverá usar uma dll compatível com essa distribuição e se assim for, tenha atenção quanto ao fato de ser TS ou NTS.

De uma olhada nesse link: VC6 Windows binaries for imagick 2.3.0, não examinei nem testei nessa distribuição, mas fica a dica.

Enfim…

Alterei o nome dessa dll para php_imagick.dll e se quiser pode fazer o mesmo.
Coloque essa dll dentro da pasta referente as extensões do PHP, no meu caso C:/php/ext, não precisa colocar em nenhum outro lugar mais.

Agora abra o php.ini e procure a lista de extensões e adicione a seguinte linha:

extension=php_imagick.dll

(se vc não alterou o nome da dll então na lista de extensões do php.ini deve sempre ir o mesmo nome que deixou no arquivo.)

Só isso?
rsrs* não… ainda tem mais um pouquinho.

Reinicie o computador, não somente o Apache, deve ser o computador e veja se ao reiniciar deu algum erro do tipo:

Microsoft visual C++ Runtime Library
Runtime Error!
Program: C:\Arquivos de p...
R6034
An application has made attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.

Observação: Se não deu erro algum pule esse passo a seguir, mas se apareceu algum erro desse tipo, então deverá instalar o Microsoft Visual C++ 2008 Redistributable Package (x86)

Download do Microsoft Visual C++ 2008 Redistributable Package (x86)

Instale e depois reinicie o computador novamente e veja se o erro persiste.
Se já não havia aparecido esse erro ou se após instalar não aparecer mais erro algum e o Apache reiniciou normalmente, já é um bom sinal

Agora para finalizar faça o seguinte teste… execute um arquivo php no seu servidor com o seguinte código:

<?php

/* abaixo coloquei uma imagem que existia no mesmo diretório
   do arquivo php que executei o script.
   Coloque o caminho correto da sua imagem que usará para o teste*/

$im = new imagick( 'teste.jpg' ); . 

$crop = $im->clone();

$crop->cropThumbnailImage( 100, 100 );

// grava a nova imagem no mesmo dir e com o nome de thumbnail.jpg
$crop->writeImage( 'thumbnail.jpg' );

// exibindo a nova imagem. Defina o caminho exato de onde salvou a imagem
echo "<img src=\"thumbnail.jpg\" />"; 

?>

Se o código executou direitinho, parabéns, agora você pode utilizar todas as funcionalidades da extensão Imagick do PHP no Windows.

Até o próximo ;)

Tópicos relacionandos

Publicado por

Razor

Conhecedor das artes gráficas, amante de design web, amigo íntimo do desenvolvimento web, com a pretensão de aprender e ajudar à quem busca conhecimento, me faço presente. =)

7 comentários sobre “Utilizando a extensão Imagick do PHP no Windows”

  1. Roberto, muito obrigado! Eu já tinha perdido algumas horas nos últimos dias, ainda bem que hoje caí no seu post. Levei mais do que os 40 minutos porque nunca tinha instalado apache nem PHP, e já emendei de instalar MySQL também… Mas fiz os procedimentos seguintes conforme descrito e correu tudo bem, só o código do final que travou minha máquina com um erro 101. De qualquer forma, vou deixar minha pequena contribuição: num dos comentários no blog do Mikko é passado uma informação muito importante que merece constar: a versão 6.6.4.1 do Image Magick é a última que funciona, porque depois disso eles passaram a utilizar Visual Studio 10. Também é disponibilizado um link com todas as builds em http://image_magick.veidrodis.com/image_magick/binaries/ .
    Um grande abraço e obrigado!

    1. Obrigado pela sua contribuição @Rodrigo.
      Eu testei muitas versões e lustamente nesta lista que passou… posso ter pulado a versão que você citou.
      A versão mais atual do ImageMAgick que consegui fazer rodar no win7, que no caso já tem o Microsoft Visual C++ 2010, foi a que citei no tutorial, a 6.6.2.6.
      Agradeço mais uma vez sua sua contribuição acrescenta muito sim.

      Siga o Sistema Básico no twitter pra saber de novidades:
      http://twitter.com/sistemabasico
      http://twitter.com/lunelli
      Grande abraço

  2. Nossa… depois de muito fuçar a internet, esse tutorial foi o único que funcionou por completo.
    Embora seja de nov/2010, mas está bem atualizado e funcionando, o que é melhor.

    O que tenho a dizer aos outros que enfrentam o mesmo problema:

    Sigam a burrinha conforme foi descrito e não enfrentarão problema! Não inventem de trocar versão da dll, do imagick, ou seja lá qual for.

    Essa foi uma das poucas versões que não deu problema ao executar no console: “imdisplay logo.miff”

    Atualmente uso Windows 7, Apache 2.2.17 (apachelounge), Php 5.3.6 (v9 x86 ts), imagick 6.6.2.6-q16-windows-dll e php_imagick.dll (2010-11-11_1636)

  3. cara, segui seu tutorial, mas quando executo um script q puxa alguma imagem ou pdf, o apache trava (da aquele negocio do windows xp de finalizar tarefa)…
    quando é pro imagick criar uma imagem (tipo retangulo, bolinha, essas coisas) ele funciona normal
    alguem tem uma luz pra me ajudar?

    1. Nunca passei por esse erro…
      Vc instalou o ImageMagick que eu citei?

      Outra coisa que poderia ser é em relação as distribuições do PHP e Apache que está usando.
      VC9, VC6, Apache, ApacheLounge

      Da uma analisada da tua base e na base que eu mencionei no tutorial se bate corretamente.

      Abraços

  4. Aqui fiquei me matando para instalar. Só aparecia “Class ‘Imagick’ not found”. Finalmente encontrei o arquivo dll funcional para mim.

    Aqui estou usando Wamp 2.2e + “ImageMagick-6.8.2-3-Q16-x86-dll.exe” ambas são as versões atuais. Única coisa a se prestar atenção para seguir na instalação é na instalação do segundo se certificar de selecionar o item “Add application directory to your system path” como já está dito no tutorial.

    Depois adicione php_imagick_ts.dll (datado em 2011-04-25 18:49 ou mais atual) à sua pasta ext dentro da instalação do php.

    Reinicie o pc, adicione a extensão pelo menu do wamp ou pelo php.ini e (re)inicie o Apache.

    Se o arquivo não existir mais subi ele no 4Shared.

    1. Agora reli e notei que a dll que eu encontrei é somente uma versão atualizada de seu tutorial, antes somente por não funcionar, havia descartado e nem procurei por uma versão mais recente.

      Bom, pelo menos fica aí uma versão de tutorial mais simplificada e atualizada.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *