BlogProgramming

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:

1
2
3
<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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
$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

Review Overview

User Rating: Be the first one !

Artigos Relacionados

2 Comentários

  1. 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.

    1. 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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Botão Voltar ao Topo
João Clérigo - Photography
Fechar

AdBlocker Detetado
AdBlocker Detected

Por favor ajude este website permitindo a visualização de alguns anúncios. Obrigado. Please help this website allowing the view of some advertising. Thank you!