Colocando marca d'agua em imagens

Novo aqui no site? Talvez gostaria de assinar o
RSS feed do site?

Publicado em: 22/08/2007
Área: PHP
Visualizações: 10.630
Comentário(s): 1

imprimir envie por e-mail compartilhe
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:



<?php
// 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!<br>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 “<img src=”$saida” border=0>”;
?>





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/

Preencha o formulário para comentar:
Nome:*

E-mail:* (não será exibido)

Site: (http://)

Comentário:*

Deseja receber os comentários no e-mail?

Anti-spam: (nova imagem)





Nicolas

   - Publicado em: 22/10/2007 - 10:43

Olá. Testei aqui a classe funciona perfeitamente. Para implementar GIF também basta adicionar depois de elseif(eregi(”^(.*)\.(png)$”, $nome)) { if($acao == “abrir”) { return “imageCreateFromPNG”; } else { return “imagepng”; } } adicione isto depois deste elseif elseif(eregi("^(.*)\.(gif)$", $nome)) { if($acao == "abrir") return "imagecreatefromgif"; else return "imagegif"; } assim irá funcionar com imagens gif também, possibilitando a transparência com gif...

 

Autor da matéria
Igor Diniz
Eu sou www.igordiniz.com.br :D O mais bonito de todos os colunistas da Oficina da Net ;)

Todas as matérias de Igor Diniz

Publicidade
Seguir o Oficina da Net
RSS

RSS

RSS
Top matérias do mês
Matérias relacionadas
Tags

© 2005 - 2009 - Oficina da Net - v 4.0 - É proibida a reprodução parcial ou completa do conteúdo deste site sem autorização por escrito. Resolução adequada: 1024x768px.