Como criar a sua Marca de Água, automaticamente

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. 1. Verificar se o módulo Apache mod_reqrite está instalado. Se sim
  2. 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:

Review Overview

User Rating: Be the first one !
Exit mobile version