Já tive muita dificuldade para poder utilizar a extensão Imagick do PHP no Windows. 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 15 minutos ou em 8 horas
Bom... vou tentar ensinar de um jeito que consiga o mais rápido e tanquilo possível... procure executar as dicas com muita atenção.
Vamos lá...
Primeira dificuldade é quando você pensa que no site pecl.php.net onde obviamente seria o melhor lugar para se encontrar suporte de qualidade para essa extensão, primeiro tropeço.
Não se encontra nada para windows nesse link.
Lembro-me que alguns anos atrás, quando fiz esse tutorial Imagick do PHP para Windows pela primeria vez, havia uma notificação na página inicial do php.net:
Windows PECL binaries
[10-Dec-2008]
Due to unfortunate circumstances Windows binaries for PECL extensions will no longer be available on http://pecl4win.php.net.
Work is being done to incorporate Windows binaries for PECL extensions into pecl.php.net and will hopefully be ready during the 1st quarter 2009
No mínimo foi muito desanimador para quem está procurando material para rodar as funcionalidades de Imagick no Windows
Bom... eu, como todo Joseph Climber não desisti perante essa dificuldade e consegui, por isso vou publicar aqui texto de minha autoria, relatando os procedimentos que segui, talvez possa ajudar outras pessoas que possam tenham ou possa vir a ter os mesmos contratempos que tive no processo.
Uns vão me perguntar porque Imagick? e no Windows?
Gosto mais de Imagick do que GD e acho que seria válido repassar informação e conhecimento sobre tal extensão.
Utilizo o SO Win, Mac OS e Linux, porém o Windows foi a bola da vez para este tutorial
Sem dizer que muitos que escrevem seus scripts localmente usam algum tipo de WAMP.
Prometo em um momento não tão distante, ensinar a instalação no Linux e Mac Os.
Continuando...
Partiremos desta base:
(Providenciem essas versões, que são as mais atuais dentro das estáveis para a data de hoje (03/04/2010))
Instalei individualmente o Apache2.2.15 ( Win32 Binary including OpenSSL 0.9.8m (MSI Installer) ), e PHP 5.3.2 Win32 ( VC9 x86 Thread Safe - zip )
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.
Vamos começar.
Faça o download e instale um release binário windows do ImageMagick.
Lá na página do ImageMagick dá a seguinte dica:
'If you are not sure which version is appropriate, choose ImageMagick-x.x.x-xx-Q16-windows-dll.exe'
Eu coloquei "x" ali em cima, para substituir a versões, pois haverão mais atuais que as que estão lá hoje.
A dica não é fraca, visto que esse binário é o mais adequado mesmo.
-> Download do ImageMagick
(baixe o ImageMagick-6.6.0-10-Q16-windows-dll.exe)
Execute o setup e siga os passos NEXT, NEXT... hehehe e instale o binário
Após a instalação faça um teste abrindo o prompt de comando (Iniciar + executar + digite cmd e tecle enter)
Digite:
( não digite o que tiver comentado por # )
convert logo: logo.miff # e tecle enter identify logo.miff # e tecle enter # aparecerá informações da imagem imdisplay logo.miff # e tecle enter # em instantes abrirá o logo do ImageMagick na tela
Se tudo ocorreu como descrito acima, então a API ImageMagick está instalada 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(), por exemplo, 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.
Próximos passos importantes
Precisaremos da dll referente a extensão, para poder rodar as funcionalidades da classe imagick, porém no site http://www.php.net não encontramos disponível suporte nem referência sobre como encontrar tal dll.
Então vamos ao blog do Mikko, um dos colaboradores e 'mantenedores' da dll, e vamos fazer o download da dll diretamente do site dele.
Lembrando qual o PHP que eu indiquei para instalação deveremos instalar a dll compatível.
Quando entrar no link mais abaixo, faça o download da dll apropriada conorme informo em seguida:
imagick - vc9 - ts
2009-11-18 23:39 - php_imagick_ts.dll (3.0.0-dev)
http://valokuva.org/magick/
Se tentar usar uma dll não compatível com o PHP instalado ou a API ImageMagick instalada, seria um daqueles tropeços que aumentam as horas tentando fazer a instalação.
Eu renomeei essa 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?
heheheh não... ainda tem mais.
Reinicie o Apache 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 seguinte
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)[i]
Instale e depois reinicie o Apache 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:
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 cod executou direitinho... parabéns... agora você pode utilizar todas as funcionalidades da extensão Imagick do PHP no Windows