Ferramentas de Site


dev_web:php:imagick

Diferenças

Esta página mostra as diferenças entre as duas revisões da página.

Links para esta vista de comparação

Ambos os lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
dev_web:php:imagick [2010/03/30 22:45]
mjamado Ainda a imagem
dev_web:php:imagick [2018/05/14 21:37] (Atual)
Linha 9: Linha 9:
 ===== Como verificar se um servidor de produção tem o Imagick instalado? ===== ===== Como verificar se um servidor de produção tem o Imagick instalado? =====
  
-{{:php:tutoriais:imagick:php_info_imagick_section_rs.jpg?200 }}Na realidade, são precisas duas coisas, tal como já disse anteriormente: a API **ImageMagick** e a extensão **Imagick**. A forma mais fácil de visualizar é via instrução <code php>php_info()</code>. Basta colocar esta instrução num ficheiro .php e executá-lo. De todas as informações que aparecem, deverá existir uma secção **imagick**, semelhante à apresentada à esquerda.+{{:dev_web:php_info_imagick_section_rs.jpg?200 }}Na realidade, são precisas duas coisas, tal como já disse anteriormente: a API **ImageMagick** e a extensão **Imagick**. A forma mais fácil de visualizar é via instrução <php>php_info()</php>. Basta colocar esta instrução num ficheiro .php e executá-lo. De todas as informações que aparecem, deverá existir uma secção **imagick**, semelhante à apresentada à esquerda (clicar para maior).
  
 Devem existir outros //hosters// que forneçam esta extensão de raiz, mas eu só conheço um, a **[[http://www.hocnet.pt/index_intro.php|Hocnet]]**. Noutros //hosters//, que não tenham o serviço instalado, é pedir com jeitinho. Penso que não haja nenhum que recuse. Como é lógico, aconselho fortemente a **Hocnet**: ao menos, já estão habituados a esta extensão e não vão fazer disparates por ignorância. Devem existir outros //hosters// que forneçam esta extensão de raiz, mas eu só conheço um, a **[[http://www.hocnet.pt/index_intro.php|Hocnet]]**. Noutros //hosters//, que não tenham o serviço instalado, é pedir com jeitinho. Penso que não haja nenhum que recuse. Como é lógico, aconselho fortemente a **Hocnet**: ao menos, já estão habituados a esta extensão e não vão fazer disparates por ignorância.
  
 ===== Está instalado e pronto a usar, e agora? ===== ===== Está instalado e pronto a usar, e agora? =====
-Agora, é só usar. Criar um objecto Imagick é do mais linear possível, com uma pequena ressalva: dependendo das versões, a classe poderá ser imagick ou Imagick, o que pode levar a algum desespero ao início. Depois de se descobrir qual é, siga para bingo:+Agora, é só usar. Criar um objecto **Imagick** é do mais linear possível, com uma pequena ressalva: dependendo das versões, a classe poderá ser <php>imagick</php> ou <php>Imagick</php>, o que pode levar a algum desespero ao início. Depois de se descobrir qual é, siga para bingo:
 <code php> <code php>
 // é conveniente que o caminho para a imagem seja qualificado, // é conveniente que o caminho para a imagem seja qualificado,
Linha 21: Linha 21:
 </code> </code>
  
-Se quiserem criar uma imagem a partir de outro servidor na ‘Net, é preciso usar um método específico para ler o ficheiro a partir duma chamada curl (verificar no php_info se a extensão curl está instalada, também), em vez de o abrir localmente:+Se quiserem criar uma imagem a partir de outro servidor na ‘Net, é preciso usar um método específico para ler o ficheiro a partir duma chamada **curl** (verificar no php_info se a extensão **curl** está instalada, também), em vez de o abrir localmente:
 <code php> <code php>
 $ch = curl_init($url_imagem); $ch = curl_init($url_imagem);
Linha 34: Linha 34:
 </code> </code>
  
-Para enviar a imagem para o browser, é só indicar os headers correctos e fazer echo do próprio objecto:+Para enviar a imagem para o browser, é só indicar os //headers// correctos e fazer echo do próprio objecto:
 <code php> <code php>
 // o Content-Type há-de variar, conforme o tipo de imagem // o Content-Type há-de variar, conforme o tipo de imagem
Linha 41: Linha 41:
 </code> </code>
  
-Agora, é mesmo aplicar a magia… Abaixo estão alguns casos comuns, código e imagens. A imagem usada é do Castelo de Guimarães, tinha originalmente 10 MPixels, mas foi redimensionada localmente para 1024x768, e é a seguinte: +Agora, é mesmo aplicar a //magia//… Abaixo estão alguns casos comuns, código e imagens. A imagem usada é do Castelo de Guimarães, tinha originalmente 10 MPixels, mas foi redimensionada localmente para 1024x768, e é a seguinte (clicar para maior)
-[[http://www.dreamsincode.com/_media/img/2010/03/imagick_sample_1.JPG]]+ 
 +{{ :dev_web:imagick_sample_1_rs.jpg?480 }}
  
 ==== Redimensionar para uma largura máxima. ==== ==== Redimensionar para uma largura máxima. ====
-[[http://www.dreamsincode.com/_imagens/?actions=thumbnail&thumbnailOptions=150,0&img=2010/03/imagick_sample_1.JPG]]+{{:dev_web:imagick_sample_1_thumbnail_150_0.jpg }}
 <code php> <code php>
 // reparem como não estou a definir uma altura // reparem como não estou a definir uma altura
Linha 52: Linha 53:
  
 ==== Redimensionar para um tamanho definido, sem distorcer, cortando zonas que estejam a mais. ==== ==== Redimensionar para um tamanho definido, sem distorcer, cortando zonas que estejam a mais. ====
-[[http://www.dreamsincode.com/_imagens/?actions=cropThumbnail&cropThumbnailOptions=150,150&img=2010/03/imagick_sample_1.JPG]]+{{:dev_web:imagick_sample_1_cropthumbnail_150_150.jpg }}
 <code php> <code php>
 $img->cropThumbnailImage(150, 100); $img->cropThumbnailImage(150, 100);
 </code> </code>
  
-==== Aplicar um sharpen à imagem (útil no caso dos thumbnails, para ficarem mais nítidos – reparem na diferença para a anterior). ==== +==== Aplicar um sharpen à imagem. ==== 
-[[http://www.dreamsincode.com/_imagens/?actions=cropThumbnail,sharpen&cropThumbnailOptions=150,150&sharpenOptions=4,2&img=2010/03/imagick_sample_1.JPG]]+{{:dev_web:imagick_sample_1_cropthumbnail_150_150_sharpen_4_2.jpg }} 
 +Útil no caso dos thumbnails, para ficarem mais nítidos – reparem na diferença para a anterior
 <code php> <code php>
 $img->cropThumbnailImage(150, 150); $img->cropThumbnailImage(150, 150);
Linha 67: Linha 69:
  
 ==== Agora, algo mais pintas, arredondar os cantos. ==== ==== Agora, algo mais pintas, arredondar os cantos. ====
-[[http://www.dreamsincode.com/_imagens/?actions=thumbnail,roundCorners&thumbnailOptions=150,0&roundCornersOptions=10,10&img=2010/03/imagick_sample_1.JPG]]+{{:dev_web:imagick_sample_1_roundcorners_10_10.jpg }}
 <code php> <code php>
 $img->roundCorners(10, 10); $img->roundCorners(10, 10);
Linha 96: Linha 98:
 </code> </code>
  
-Esta última metodologia pode parecer um bocadinho over the edge, mas é necessária para aqueles 10% que ainda usam o IE6 – não suporta PNG’s transparentes. A boa notícia, é que existem outras técnicas; a má, é que dependem de JavaScript e de hacks específicos para IE6, com uma penalidade na performance assinalável. É o que eu uso aqui no DreamsInCode, mas apenas porque é um site pessoal e eu quero que esses 10% troquem é de browser… Num site comercial, é preciso estudar bem que percentagem, ao certo, o visita com o IE6 e tomar medidas apropriadas – se for um percentagem considerável, não será boa ideia tornar o site mais lento para eles. Mas voltaremos a esses hacks posteriormente.+Esta última metodologia pode parecer um bocadinho //over the edge//, mas é necessária para aqueles 10% que ainda usam o IE6 – não suporta PNG’s transparentes. A boa notícia, é que existem outras técnicas; a má, é que dependem de JavaScript e de //hacks// específicos para IE6, com uma penalidade na performance assinalável. É o que eu uso no **DreamsInCode**, mas apenas porque é um site pessoal e eu quero que esses 10% troquem é de browser… Num site comercial, é preciso estudar bem que percentagem, ao certo, o visita com o IE6 e tomar medidas apropriadas – se for uma percentagem considerável, não será boa ideia tornar o site mais lento para eles. Mas voltaremos a esses //hacks// posteriormente. 
 + 
 +===== Próximos passos =====
  
-Por hoje, ficamos por aqui; noutro dia explicarei algumas funções mais avançadas, como sombreados, composição de texto, composição de outras imagens sobre a imagem original, etc. Por ora, deixo-vos com este exemplo all-in (sim, a imagem ainda é a mesma, é tudo feito com o Imagick):+Por hoje, ficamos por aqui; noutro dia explicarei algumas funções mais avançadas, como sombreados, composição de texto, composição de outras imagens sobre a imagem original, etc. Por ora, deixo-vos com este exemplo //all-in// (sim, a imagem ainda é a mesma, é tudo feito com o **Imagick**):
  
-===== Créditos ===== +{{ :dev_web:imagick_sample_1_all_in.jpg }} 
-Autor[[http://www.portugal-a-programar.org/forum/index.php?action=profile;u=14906|mjamado]] \\ +{{tag>php}}
-Fonte: [[http://www.dreamsincode.com/blog/2010/03/30/imagick/|DreamsInCode]]+
dev_web/php/imagick.1269989115.txt.gz · Última modificação em: 2018/05/14 21:37 (edição externa)