8 de julho de 2011  //  5 Comentários  //  Categorias: PHP, Tutoriais

Mesclando imagens transparentes no PHP



Apesar do manual do PHP ser muito grande e com inúmeros exemplos, não há nada muito preciso sobre o assunto. Alias, os exemplos mostrados no manual simplesmente não funcionam…

Depois de algumas horas tentando, pesquisando, xingando, batendo e chorando, desvendei o mistério deste enigma e agora vou compartilhar com vocês.

Redimensionando e mantendo transparência

Neste exemplo, redimensionaremos uma imagem inserindo-a em uma imagem temporaria, alterando suas dimensões.

Mesclando e mantendo transparência

Agora pegaremos duas imagens e colocaremos uma dentro da outra.

Criando uma nova imagem e mantendo transparência

Para finalizar, criaremos uma imagem temporaria transparente e adicionaremos duas imagens nela.

Conclusão

O segredo consiste em definir corretamente as propriedades imagealphablending e imagesavealpha.

Manual PHP: imagesavealpha e imagealphablending

Espero ter ajudado. xD

Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons 3.0 (CC BY SA 3.0) você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>8 de julho de 2011</em> por <strong><a href="http://pedroelsner.com/" title="Pedro Elsner, Profissional de TI - São Paulo">Pedro Elsner</a></strong>: <a href="http://pedroelsner.com/2011/07/mesclando-imagens-transparentes-no-php/" title="Mesclando imagens transparentes no PHP">Mesclando imagens transparentes no PHP</a></p>
A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.
  • Roger

    Parabens pelo post Pedro Elsner. Obrigado por compartilhar seu conhecimento, me ajudou bastante. 
    Só gostaria de comentar, um pequeno ajuste no exemplo sobre o redimensionando, creio q vc se equivocou nas linhas:
    16 => imageAlphaBlending($img, false); e 22 => imageSaveAlpha($img, true); ,
    creio que o correto seria:  

    16 => imageAlphaBlending($imgTemp, false); e 22 => imageSaveAlpha($imgTemp, true);
     

    Abraço e sucesso!

  • Todos os exemplos estavam com algumas variáveis trocadas… falta de atenção ^^’
    Já corrigi todos!

    Obrigado Roger.

  • Mateus

    Parabéns! Muito bom

  • Rafael Nunes

    No meu não funcionou como deveria, mostra apenas um ícone de imagem não encontrada, ou algo assim!

  • Odracir

    Como fazer para ao invés de exibir a imagem em tela, ela fosse movido para uma pasta no servidor?