Ultimamente, andei à procura de algum plugin para Wordpress que de alguma forma conseguisse fazer marcas de água para as minhas fotografias.
De todos os plugins disponíveis que encontrei, poucos funcionavam. E dos que funcionavam poucos faziam a marca de água como eu gostaria, e desses todos eles acabavam por colocar a marca de água permanentemente na fotografia, impedindo que possa fazer alterações na marca de água, pois o original ficava marcado para sempre.
A solução imediata parecia que teria de por mãos à obra e fazer uma marca de água / assinatura para cerca de +400 fotos, à mão, individualmente para cada foto, e depois substituir cada uma. De repente parecia que iria ser fácil, mas rapidamente mesmo ao ver que usando um sistema de automatação no Photoshop, iria gastar ainda assim muito tempo e não me resolvia o problema a longo prazo, porque teria de colocar as marcas sempre à mão, e sinceramente é um processo que não me agrada muito, é uma forma aborrecida e porque fico sempre com a imagem com a marca permanente, e para evitar isso teria de manter manter mais cópias, entre outros problemas.
Portanto, a solução teria de passar por ter algo que me criasse a marca de água automaticamente (on the fly) por cada vez que a imagem seja requisitada do servidor, sem nunca danificar o original, porque posso querer a qualquer altura mudar a minha marca de água / assinatura.
Os requisitos para esta execução passam por ter um servidor Apache com o módulo mod_rewrite e PHP5 com o módulo GD.
Colocando mãos à obra, precisamos de editar (ou criar, caso não exista) o ficheiro .htaccess, neste caso na raiz do directório do website. Colocamos o ficheiro o seguinte:
<IfModule mod_rewrite.c> RewriteRule ^(.*)wp-content/uploads/((.*)\.(jpe?g))$ //watermark/_watermark.php?src=wp-content/uploads/ [T=application/x-httpd-php,L,QSA] </IfModule>
Genericamente, o que este código faz é:
- 1. Verificar se o módulo Apache mod_reqrite está instalado. Se sim
- 2. Executa em PHP o ficheiro watermark/watermark.php para todas as imagens servidas a partir da pasta wp-content/uploads/
Guardar e fechar o ficheiro .htaccess, daqui não precisamos de mais nada.
De seguida criar uma pasta na raiz chamada de watermark, que é aqui que vamos colocar um ficheiro chamado watermark.php com o seguinte script.
<?
$original = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
waterMark($original);
function waterMark($original){
$original = urldecode($original);
$info = GetImageSize($original);
$width = $info[0];
$height = $info[1];
// a imagem original
$new_image = ImageCreateFromJPEG($original);
if ($width > 1080){
// barra ao fundo com transparencia
$bg = ImageColorAllocateAlpha($new_image, 150, 150, 150, 65); // (PHP 4 >= 4.3.2, PHP 5)
imagefilledrectangle($new_image, 0, $height-50, $width, $height, $bg);
// criar cores
$white = imagecolorallocate($new_image, 255, 255, 255);
$grey = imagecolorallocate($new_image, 128, 128, 128);
$black = imagecolorallocate($new_image, 0, 0, 0);
if ($width >= 1080){
// texto a escrever
$text = 'http://fotografia.clerigo.pt';
// caminho até à fonte ttf
$font = '/var/www/vhosts/clerigo.pt/subdomains/fotografia/httpdocs/watermark/KhmerUIb.ttf';
// adicionar texto à imagem
imagettftext($new_image, 40, 0, 10, $height-10, $white, $font, $text);
// texto a escrever
$text = date("Y") . ' © João Clérigo ';
// caminho até à fonte ttf
$font = '/var/www/vhosts/clerigo.pt/subdomains/fotografia/httpdocs/watermark/segoepr.ttf';
// adicionar sombra ao texto
imagettftext($new_image, 20, 0, $width-299, $height-15, $black, $font, $text);
// adicionar texto à imagem
imagettftext($new_image, 20, 0, $width-300, $height-16, $white, $font, $text);
}
}
// finalmente, servir a imagem
header("Content-Type: image/jpeg");
ImageJPEG($new_image);
imagedestroy($new_image);
}
?>
E está feito. A partir de agora, todas as imagens servidas a partir da pasta especificada têm sempre marca de água
De tomar nota dois pontos:
- A marca só está a ser criada para imagens cuja largura seja superior a 1600 pixeis
- São necessárias fontes True Type, que devem ser colocadas numa pasta também no servidor






Caro amigo, seu artigo foi muito bem explicado, porém gostaria de saber se ele se aplica a mim, meu site é um sistema de imobiliária gostaria de aplicar a marca em todas as imagens de uma determinada pasta, incluindo imagem e texto.
Olá.
Este exemplo poderá ser aplicado a qualquer situação que envolva o uso de imagens.
No entanto há requisitos mínimos técnicos. Deverá poder:
1. ter acesso ao servidor onde tem alojadas as suas páginas
2. o servidor tem de correr a linguagem PHP
3. ter noções de programação