A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Joomla, Highslide e Thumbnails

Qui

18

Dez

2008


00:00

(13 votos, média 3.92 de 5) 


O novo plugin

No novo plugin, os parâmetros com a imagem reduzida e a ampliada são substituídos pelo caminho e pelo nome da imagem ampliada - os demais permanecem os mesmos. Assim sendo, as variáveis fornecidas ao nosso script pelo Jumi passam a ser:

$jumi[0] = "images/stories" $jumi[1] = "imagem.jpg" $jumi[2] = "Minha imagem" $jumi[3] = "left" $jumi[4] = "Legenda no rodapé da imagem ampliada"

O novo script ampliaImagem.php incorpora rotinas para criar o thumbnail:

<?php echo $jumi[2]; ?> '; echo $jumi[4]; echo '
'; } ?>
  • Na linha 4 é declarada a variável $imagem que recebe a string concatenada $jumi[0].'/'.$jumi[1], ou seja, $imagem="images/stories/imagem.jpg"
  • Na linha 5 é indicado o percentual de redução desejado. Acho que um valor entre 30 e 40 é o ideal.
  • Nas linhas 7 a 9 é criado o nome que a miniatura vai receber. Inicialmente explodimos o nome da imagem ($jumi[1]) usando como referência o delimitador ".", ou seja, $thumb = explode('.', $jumi[1]) retorna o array $thumb onde $thumb[0]="imagem" e $thumb[1]="jpg". A seguir colocamos o tipo de imagem na variável $tipo ($tipo = $thumb[1]) e criamos o nome da miniatura concatenando o caminho do script ("includes/jumi/") com o nome da imagem ($thumb[0]), a string '_mini.' e a extensão ou tipo da imagem $tipo. O resultado é a string "includes/jumi/imagem_mini.jpg".
  • Na linha 11 testamos se a imagem "includes/jumi/imagem_mini.jpg" existe. Se estiver no mesmo diretório que o script, não precisa ser criada novamente. Neste caso, a execução do script pula diretamente para a linha 34. Se ela não existir, precisa ser criada.
  • Nas linhas 12 a 16 testamos se o tipo da imagem ampliada é "jpg" ou "png". Se o tipo for "jpg" (linha 13), fazemos uma cópia da mesma com a função do PHP ImageCreateFromJPEG e guardamos a cópia na variável $img_origem; se for do tipo "png" (linha 15), fazemos a cópia com a função ImageCreateFromPNG e a guardamos na variável $img_origem.
  • A seguir, nas linhas 18 e 19, obtemos a largura e a altura da imagem ampliada com as funções do PHP ImagesX e ImagesY. Os valores são guardados nas variáveis $origem_x e $origem_y.
  • Agora toca calcular o tamanho da miniatura. Nas linhas 20 e 21 aplicamos o percentual indicado na variável $percentual à largura e à altura da imagem ampliada e armazenamos em $x e $y o valor inteiro ( usando intval() ) do cálculo.
  • A seguir criamos uma imagem vazia com as novas dimensões calculadas e a chamamos de $img_final. A linha 22 mostra como: $img_final = ImageCreateTrueColor($x, $y);
  • Tendo uma imagem vazia com as dimensões desejadas, agora só é preciso copiar o que desejamos para dentro dela. Quando se tem um modelo para copiar, a função do PHP ImageCopyResampled é uma mão na roda... se soubermos o que o monte de parâmetros que ela exige significam. Então, vamos lá:
    • O primeiro parâmetro é a imagem que queremos preencher - $img_final
    • O segundo é o modelo, ou seja, $img_origem
    • O terceiro e o quarto são as coordenadas x e y dos pontos a partir dos quais a porção copiada será inserida. É claro que queremos começar em 0,0
    • Os dois seguintes são as coordenadas x e y dos pontos a partir dos quais a imagem deve ser copiada. Novamente é claro que que queremos que comecem a ser copiados em 0,0
    • Mais uma vez um par de parâmetros, desta vez para determinar a largura e a altura (em pixels) que a porção copiada terá na imagem destino, neste caso representados por $x+1 e $y+1
    • Finalmente, o último par de parâmetros indica a largura e a altura (também em pixels) da porção que deve ser copiada da mensagem original, ou seja, $origem_x e $origem_y
  • A esta altura do campeonato, a cópia já está feita. Agora só precisamos salvar a miniatura. Se quisermos preservar o formato da imagem original, então será preciso testar novamente o tipo. Se for "jpg", usamos a função do PHP ImageJPEG; se for do tipo "png", usamos a função ImagePNG. Os parâmetros desta função são a imagem recém-criada ($img_final) e o caminho/nome ($thumb) da mesma.
  • Feito isto, só nos resta liberar a memória usada para armazenar a imagem original e a criada para obter a miniatura. Para isto (linhas 29 e 30) usamos a função do PHP ImageDestroy().

Observação importante: o diretório onde está o script (no exemplo, /includes/jumi/) precisa ter permissão para escrita para que a miniatura possa ser salva.

Informações adicionais