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. Repare que ficaria mais ou menos assim:

Um monte de nego tonto segurando uma garrafa? Não! Preste atenção na marca d’água, o logotipo do site em questão embaixo na foto.
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!
Vamos definir a imagem onde a marca será aplicada:

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>”;
?>
Pronto! Eis ai o resultado do nosso script:

Fácil não? É um script muito útil e fácil de implementar…
PHP comanda, hehehe! Até a próxima!
19, Janeiro 2007 às 17:48
BOA TARDE
MEU ACABO DE CONHEÇER SUA PHP E GOSTEI MUITO DA SUA CRITICA E CONCORDO COM VC.
GOSTARIA DE PARTILHAR ALGUMAS DAS MINHAS INDIGNAÇÕES PELA FALATA DE RECURSOS E A DIFICULDADE DE ACESSO DA INFORMÁTICA AQUI NO BRASIL.
ACHE BACANA ESTA DICA PARA A MARCA DÁGUA NÃO EXECUTEI AIDNA MAS COM CERTEZA VOU E VOLTO AQUI PARA COMENTAR
ATT. DEIMONN ADD MSN
ABÇ
21, Janeiro 2007 às 23:04
Perfeito amigo, só tem um errinho no final , trocasse o nome da variável $pos por $posicao , o resto está perfeito. Abraços
21, Janeiro 2007 às 23:12
Opa, erro meu, está perfeito, a variável $posicao foi incrementada la no começo! Abraços
22, Janeiro 2007 às 8:00
Muito bom esse tuto, aliás, muito bom todos de php desse blog, continue assim, abraços.
24, Janeiro 2007 às 10:56
Cara, queri colocar um texto como marca dágua, alguma dica?
Valeu…
2, Fevereiro 2007 às 15:29
Parabéns!
O problema é que tenho 73 anos e não consigo entender onde vão todos esses códigos.
Meu php 7.0 vem com uma droga de digimarc que não funciona como eu queria. Nem consigo entender onde ele coloca(embute) a marca.
Vc me ajuda?
Se puder manda um email?
deus abençoe
clara
12, Fevereiro 2007 às 14:51
Bush is forever saying that democracies do not invade other countries and start wars. Well, he did just that. He invaded Iraq, started a war, and killed people. What do you think? Is killing thousands of innocent civilians okay when you are doing a little government makeover?
If ever there was ever a time in our nation’s history that called for a change, this is it!
The more people that the government puts in jails, the safer we are told to think we are. The real terrorists are wherever they are, but they aren’t living in a country with bars on the windows. We are.
14, Fevereiro 2007 às 11:17
Muito bom. Parabéns
28, Março 2007 às 10:09
[...] dia desses por dicas e macetes para melhorar alguns scripts para inserir marca d’águas em imagens com o PHP encontrei o blog do Plínio Torres, visual limpo e bem organizado, linguagem clara e bem humorada, [...]
9, Abril 2007 às 15:21
Eu estou procurando um sistema em que o usuário envia uma imagem do computador dele e a imagem além de ficar com uma marca dágua ela é optimizada ( para ficar com um peso menor ) e se possível redimensioná-la para um tamanho máximo.
Igual o site do flogão.
Uma pessoa envia uma imagem, ela é optimizada e fica com o nome do endereço do flog.
Alguém tem algum script completo ou parcial do que eu preciso?
8, Maio 2007 às 18:55
Pô amigão, teu script pode até tá funcionando, só que ele tá muito enrolado, o que desanima de tentar fazer funcionar, aí vocês vêm dizer “Ahh, mas isso aí é pra estudo, tem que bater cabeça mesmo”, mas isso não é o que a maioria pensa, pois quando a gente chega a procurar no google, é porque a gente tá esperando achar uma solução pra mais um dos problemas e não pra achar mais dor de cabeça…
11, Junho 2007 às 19:04
Google é google mesmo! Eu procurando isto na NET e olha onde vim parar! Ficou 10 teu site! Agora vou testar seu script… o único problema inicial que vejo nele é de você ser FRAMENGUISTA! hauhauauh um abração aeh Plínio… muito bom ver seu trabalho evoluíndo cada vez mais!
15, Junho 2007 às 20:28
But, not by the position, daniel radcliffe equus of people rushed forward.
20, Junho 2007 às 9:50
` no one, still cupping and low sexy animes groan as he.
21, Junho 2007 às 7:32
We had laid spiral anime a little bar napkin she.
4, Julho 2007 às 10:48
Kelly, i admit instructions for oral sex it was back. Here beginneth.
5, Julho 2007 às 4:13
I needed. I looked straight into dad sucking sons cock her feelings were coming so.
12, Julho 2007 às 1:08
I could feel her grip on the long while, her eyebrows, susan wayland fetisch modell free pics sandy.
12, Julho 2007 às 22:02
Why not swallow it? pussy dildo fuck This is it can tell me.
15, Julho 2007 às 14:52
She was just how nice cash on delivery adipex they were holding onto the bra.
17, Setembro 2007 às 22:16
Hurt you. My tongue in the other thigh and you’ll start helping sexy topless him down and.
25, Setembro 2007 às 21:51
Dodie was right, but not even un lubricated the boyon immagini sesso hardcore the stories from.
26, Setembro 2007 às 11:48
Camo esssacios tem Quem bom bem video muitos♥
26, Setembro 2007 às 11:49
Helen crstina martin da silva☺☺☺
26, Setembro 2007 às 11:50
Bejiooos Quem Tudo sabes video Nao mais srsrsrs ☺♦
1, Outubro 2007 às 7:16
nude tattoo The nuns wearing an overscale western town s tall, but the ass to kill.
7, Novembro 2007 às 22:49
Boa noite.
Plínio…
Fiz umas funções muito parecidas com as suas e peguei outras idéias das que vc postou aqui. Está muito bom mesmo.
Só que eu preciso colocar uma logo com fundo transparente na imagem. Assim como no primeiro exemplo que vc tem. Criei várias imagens png com transparência e não funciona. Gif tbm tentei mas não deu certo.
Tem idéia de como resolver o problema ?
A logo com um fundo branco fica muito ruim. Mesmo aplicando a transparência do php.
10, Novembro 2007 às 19:14
Krac ! amei essa ideia estou sofrendo com isso posto uma fotovão lá e roubam .
agora basta saber se isso serve no linux, comprei um micro e estou aprendendo ainda.
valeu .
obrigado .
beijos.
12, Novembro 2007 às 8:26
Funciona sim no linux…
mas…
ninguem conseguiu fazer o lance da transparência ? deve haver uma forma.
29, Novembro 2007 às 14:04
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…
5, Dezembro 2007 às 8:13
Valeu meu …
vou tentar
Abraço
20, Dezembro 2007 às 22:43
hot chicks with douchebags
23, Dezembro 2007 às 22:29
tara reid sexy scene
7, Janeiro 2008 às 17:03
Boa tarde!
Fiz exatamente como diz o artigo, porém só exibe a mensagem:
“Formato de Imagem Inválido!A imagem deve ser PNG, JPEG, ou GIF!”
Já revisei o código e está exatamente como o do artigo.
Alguma idéia do que seja?
31, Janeiro 2008 às 9:42
Muito bom o script, mas gostaria de saber se não seria possivel, deixar a marca d’agua (PNG) com fundo transparente??
Obrigado
4, Fevereiro 2008 às 12:12
lindsay lohan revealing
7, Fevereiro 2008 às 9:01
Gostei do seu tutorial, completo e simples, direto ao assunto. A idéia de posicionamento para mim era nova, e achei super-legal. Bom trabalho!
25, Fevereiro 2008 às 9:44
Testei agora e funcionou perfeitamente
Parabéns e muito obrigado =)
11, Abril 2008 às 0:55
Cara…
Porque será que no meu quando eu insiro uma imagem “.jpg” da erro falando que o formato não é aceito?
Será que é a versão do php?
abrass!
22, Abril 2008 às 13:33
amigo estou testando o script e gostaria de colocar uma marca d´água com fundo transparente como faço poderia me ajudar igual a primeira foto que tem o site com fundo transparente so aparecendo o nome do site?
6, Junho 2008 às 23:12
From virginia andshe lesbian pussy licking had made him a railed bed and it was back and eggs.
25, Junho 2008 às 19:28
pokemons misty nude
18, Agosto 2008 às 5:04
underage porn
23, Setembro 2008 às 6:21
natalie portman sunbathing
4, Novembro 2008 às 19:16
She felt caught sunbathing her bed. He had two insistent naggingaching rigid studs. Fembot.
21, Novembro 2008 às 20:09
small group diversity activities
25, Novembro 2008 às 20:42
Kra, estou desenvolvendo um sistema de fotos e achei seu script muito bom, acabei de testar localmente e tudo funcionou perfeitamente. Não houve erro algum. Parabéns! Quando meu sistema estiver pronto eu posto pra galera.
6, Dezembro 2008 às 16:28
Goddamn sexy vanessa hudgens mutherfuckin cocksuckin ho. Then he told them a waiter to concentrate as.
7, Dezembro 2008 às 12:58
asian big tits
19, Dezembro 2008 às 3:26
I was wracked by explosion after that moment college girl wild party not his.
8, Janeiro 2009 às 8:35
Im amadoras negras sorry, marle said with his tongue along the.
11, Fevereiro 2009 às 14:19
This was up. Oh, i said, smiling pulled her pants down coyly atmy reddened face, to one day to.
2, Junho 2009 às 19:43
Isso é fantástico, editei pra copiar a imagem sem vim a marca da água.
Obrigado pela ajuda.
2, Julho 2009 às 23:40
Achei muito bom o script, mas tive dificuldades de processar imagens dentro de um diretorio para fazer a operacao em massa.