Colocando marca d'agua em imagens

Nesse tutorial irei ensinar a como colocar uam marca d'agua em suas imagens, assim resolvendo o problema de muitos fotografos ou de bloqueiros que passam noites colocando marcas d'agua em suas fotos

Por | @oficinadanet Programação
Como o meu negócio é desenvolvimento web mesmo, não adianta fugir, o negócio é aproveitar a tecnologia! Muitos sites de fotos usam este recurso como um modo de colocar o logotipo do site ou da empresa em fotos postadas na internet de modo a identificar a foto onde quer que ela seja usada.

Ai o cara tira aquele monte de foto e no dia seguinte com aquele sono e aquela ressaca do caralho vai pra frente do micro postar as imagens no site e fica horas no Photoshop colocando a marca d?água em cada foto, uma a uma. Como diria Seu Creisson, isso é coisia do passadio quando se usia a tecnlogistica modernia!

Vou ensinar aqui passo a passo um script que fiz pra um site de fotos da região que coloca automaticamente a marca nas fotos, conforme elas vão sendo postadas no site em questão, sem precisar manipular nada em um editor de imagens.

Para criar a marca é necessário que haja a biblioteca de manipulação de imagens GD instalada no servidor web, caso não possua, procure no Google como instalar.


Vamos definir a marca que será usada: Logotipo do nosso poderoso php!

Lembrando que este script só trabalha com imagens no formato JPG ou PNG!

Agora vamos ao script:

// 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 = "http://200.131.250.31/plinio/blog/foto_da_marca.jpg";
$marca="http://200.131.250.31/plinio/blog/logo-php.jpg";
// Rodapé direito, veja os números correspondentes na função
$posicao="3";
// Porcentagem de transparência desejada na marca
$transparencia="60";
// Local onde a imagem pronta será armazenada
$saida="galeria/resultado.jpg";

class marca_dagua
{
// Construtor, verifica se a biblioteca GD tá no sistema

function marca_dagua()
{
    // Verifica se há biblioteca GD no PHP
    if(!function_exists("ImageCreateTrueColor")) // GD versão 2.*
    {
        if(!function_exists("ImageCreate")) // GD versão 1.*
        {
            echo "Você não possui a biblioteca GD carregada no PHP!";
            exit;
        }
    }
}
// Começamos a criar a marca com a função Gera
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!
A imagem deve ser PNG ou JPEG!";
        die;
    }
}
}
// Chama a função de nova imagem a ser criada
$imagem =& new marca_dagua();

// 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 "Colocando marca d'agua em imagens";
?>

Fácil não? É um script muito útil e fácil de implementar?
PHP comanda, hehehe! Até a próxima!

Por Plinio Torres
Retirado de:
http://pliniotorres.wordpress.com/2007/01/17/tutorial-marca-dagua-em-imagens-com-php/

Mais sobre: php
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo