XOOPS WAP Mobile
Notícias
Detalhes:
Título: XCGallery - Hack Marca d'água
Autor: admin
Data: 2005-12-08 12:43:36
Conteúdo:
Olá!

É comum navegar nas comunidades e ver que todos querem proteger suas fotos que vão para o ar com algum recurso do tipo marca d’água...

Segue então um pequeno hack bem fácil de ser aplicado no XCGallery... (vale para a versão 1.1 e 2.x, ou seja (todas)... leia adiante para ver o passo-a-passo.

Primeiramente, criamos o arquivo watermark.php (salve o arquivo no diretório raiz do módulo xcGallery) para conter as funções da marca d’água: deve ser como abaixo ( o código está todo comentado para ajudar a entender o que está sendo feito):

[code]
// $Id: watermark.php, 2005/12/08
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Ricardo H. Rekowsky (eyekeeper) //
// ------------------------------------------------------------------------- //

// obter a origem da foto
$b = imagecreatefromjpeg($picturename) or die ("Não foi possível criar a imagem a partir do JPEG");
$bx = imagesx($b);
// largura da imagem de origem
$by = imagesy($b);
// altura da imagem de origem
$lm = $b;
if ($bx > 200)
{
// este recurso faz com que a marca d'agua seja adicionado às miniaturas (thumbnails)
// adicionar marca d'água
// possíveis posicoes
// bottomright = em baixo no lado direito
// bottomleft = em baixo no lado esquerdo
// topright = em cima do lado direito
// topleft = em cima do lado esquerdo
$pos = "bottomright";
//posicionamento da marca d'água
if ($pos == "topleft")
{
$src_x = 0; $src_y = 0;
}
else
if ($pos == "topright")
{ $src_x = $bx - 193;
$src_y = 0;
}
else
if ($pos == "bottomleft")
{
$src_x = 0;
$src_y = $by - 30;
}
else
if ($pos == "bottomright")
{
$src_x = $bx - 270;
$src_y = $by - 30; }
// aqui que juntamos a marca d'agua com a foto
ImageAlphaBlending($lm, true) or die ("não foi possível mesclar a marca d'água");
// habilitar para o GD 2+
// nome do arquivo que servirá como marca d'água (formato png)
$logoImage = ImageCreateFromPNG('images/watermark.png');
$logoW = ImageSX($logoImage);
$logoH = ImageSY($logoImage);
ImageCopy($lm,$logoImage,$src_x,$src_y,0,0,$logoW,$logoH);
}
// qual a qualidade do jpeg - neste caso 80
Imagejpeg($lm,'',80);
imageDestroy($lm);
?>
[/code]

Primeira parte esta concluída... agora vamos fazer uma pequena alteração no arquivo functions.inc.php dentro da pasta include do módulo xcgal:

Por volta da linha 623 (dependendo da versão do módulo a linha pode ser diferente, então mande localizar pela string abaixo) procure por:

[code]
return $url_prefix[$pic_row['url_prefix']]. path2url($dir_prefix[$mode].$pic_row['filepath']. $pic_prefix[$mode]. $pic_row['filename']);
[/code]

E altere para:

[code]
return 'watermark.php?picturename='.$url_prefix[$pic_row['url_prefix']]. path2url($pic_row['filepath']. $pic_prefix[$mode]. $pic_row['filename']);
[/code]

Não esqueça de salvar o arquivo.
Depois de efetuar estas alterações e carregar os arquivos para o servidor, não esqueça de atualizar o módulo na área administrativa  módulos ; do seu site.

Todas as imagens intermediárias e as originais receberão a marca d’água... as pequenas (thumbnails) não... até porque são muito pequenas e ninguém vai querer copiar mesmo... image

Veja um exemplo do hack rodando em http://www.docelandiajoinville.com.br (produtos)

Bem... é isso... bom código para todos,

eyekeeper
(gracias izzy, por liberar a permissão de envio)


<< 1 ..100 (101) 102 ..335 >>