Ir para conteúdo
Fórum Script Brasil
  • 0

Marca d'agua em imagens


D31v1d1

Pergunta

Bom dia, estou utilizando esta class abaixo para colocar marca d'agua em imagens upadas, o código funciona perfeitamente e é muito simples de implementar em qualquer projeto, o problema é que gostaria de colocar apenas a logo sem fundo, como se fosse um png transparente mas quando carrego como logo uma imagem da logomarca sem fundo em png ela fica como a imagem a seguir

logomarcao.jpg

Existe alguma forma de aplicar está logomarca para que ela fique somente a logo sem aquele fundo transparente? Já tentei usar a logo em .gif mas não funciona.

Segue código da class abaixo

<?php
/*
* Classe MarcaDagua
* Descricao: Classe que realiza conexao com o banco de dados. 
*
*
* ########   EXEMPLO  #########
* $marca = new MarcaDagua();
* $marca->gera("$foto", "$marca", "$saida", $posicao, $transparencia);
*
* # TABELA DE POSIÇÕES
*   1 - Topo Esquerdo
*   2 - Topo Direito
*   3 - Rodapé Esquerdo
*   4 - Rodapé Direito
*   5 - Centro
*   6 - Centro Direito
*   7 - Rodapé Centralizado
*   8 - Centralizado Esquerdo
*
* */

class MarcaDagua {

    function MarcaDagua() {
        if(!function_exists("ImageCreateTrueColor")){
            if(!function_exists("ImageCreate")){
                echo "Você não possui a biblioteca GD carregada no PHP!";
                exit;
            }
        }
    }

    function gera($imagemfonte, $marcadagua, $imagemdestino, $pos = 0, $transicao = 100){
        // Obtém o cabeçalho de ambas as imagens
        $funcao = $this->verifica_tipo($marcadagua, "abrir");
        $marcadagua_id = $funcao($marcadagua);
        $funcao = $this->verifica_tipo($imagemfonte, "abrir");
        $imagemfonte_id = $funcao($imagemfonte);

        // Obtém os tamanhos de ambas as imagens
        $imagemfonte_data = getimagesize($imagemfonte);
        $marcadagua_data = getimagesize($marcadagua);
        $imagemfonte_largura = $imagemfonte_data[0];
        $imagemfonte_altura = $imagemfonte_data[1];
        $marcadagua_largura = $marcadagua_data[0];
        $marcadagua_altura = $marcadagua_data[1];

        // Aqui, defini-se a posição onde a marca deve aparecer na foto

        // Centralizado
        if( $pos == 0 ) {
            $dest_x = ( $imagemfonte_largura / 2 ) - ( $marcadagua_largura / 2 );
            $dest_y = ( $imagemfonte_altura / 2 ) - ( $marcadagua_altura / 2 );
        }

        // Topo Esquerdo
        if( $pos == 1 )    {
            $dest_x = 0;
            $dest_y = 0;
        }

        // Topo Direito
        if( $pos == 2 )    {
            $dest_x = $imagemfonte_largura - $marcadagua_largura;
            $dest_y = 0;
        }

        // Rodapé Direito
        if( $pos == 3 )    {
            $dest_x = ($imagemfonte_largura - $marcadagua_largura) - 5;
            $dest_y = ($imagemfonte_altura - $marcadagua_altura) - 5;
        }

        // Rodapé Esquerdo
        if( $pos == 4 )    {
            $dest_x = 0;
            $dest_y = $imagemfonte_altura - $marcadagua_altura;
        }

        // Topo Centralizado
        if( $pos == 5 )    {
            $dest_x = ( ( $imagemfonte_largura - $marcadagua_largura ) / 2 );
            $dest_y = 0;
        }

        // Centro Direito
        if( $pos == 6 )    {
            $dest_x = $imagemfonte_largura - $marcadagua_largura;
            $dest_y = ( $imagemfonte_altura / 2 ) - ( $marcadagua_altura / 2 );
        }

        // Rodapé Centralizado
        if( $pos == 7 ) {
            $dest_x = ( ( $imagemfonte_largura - $marcadagua_largura ) / 2 );
            $dest_y = $imagemfonte_altura - $marcadagua_altura;
        }

        // Centro Esquerdo
        if( $pos == 8 ) {
            $dest_x = 0;
            $dest_y = ( $imagemfonte_altura / 2 ) - ( $marcadagua_altura / 2 );
        }
        // A função principal: misturar as duas imagens
        imageCopyMerge($imagemfonte_id, $marcadagua_id, $dest_x, $dest_y, 0, 0, $marcadagua_largura, $marcadagua_altura, $transicao);

        // Cria a imagem com a marca da agua
        $funcao = $this->verifica_tipo($imagemdestino, “salvar”);
        $funcao($imagemfonte_id, $imagemdestino, 100);
    }

    // Verifica o tipo da imagem e retorna a função para uso
    function verifica_tipo($nome, $acao) {
        if(eregi("^(.*)\.(jpeg|jpg)$", $nome)) {
            if($acao == "abrir") {
                return "imageCreateFromJPEG";
            }
        else {
            return "imagejpeg";
        }
        }elseif(eregi("^(.*)\.(png)$", $nome)){
            if($acao == "abrir") {
                return "imageCreateFromPNG";
            }else {
                return "imagepng";
            }
        }else{
            echo "Formato de Imagem Inválido!<br>A imagem deve ser PNG ou JPEG!";
            die;
        }
    }

    
}

// Definido parâmetros como o endereço das imagens, a posição da marca na imagem, a porcentagem de transparência da marca e onde a marca pronta será armazenada

$foto = "Firefox_wallpaper.png";
$marca= "logo.png";
// Rodapé direito, veja os números correspondentes na função
$posicao="0";
// Porcentagem de transparência desejada na marca
$transparencia="40";
// Local onde a imagem pronta será armazenada
$saida="resultado.jpg";
// Chama a função de nova imagem a ser criada
$imagem = new MarcaDagua();

// Cria a imagem de acordo com as imagens fonte, posição e transparência
$imagem->gera("$foto", "$marca", "$saida", $posicao, $transparencia);

// Imprime a imagem final com a marca, com o nome de resultado.jpg
echo "<img src=\"$saida\" border=0>";
?>

Obrigado pela ajuda até mais

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...