Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

#6021
Fala galera,
para quem quiser colocar uma marca d'água nas imagens para evitar que sejam copiadas segue o tutorial.
**lembrando que é sempre bom fazer um backup dos arquivos existentes**

1- criar o arquivo watermark.png e colocar na pasta image/

2- alterar o arquivo image.php -> system/library/image.php
localizar o código abaixo : linhas 93 a 121
Código: Selecionar todos
    public function watermark($file, $position = 'bottomright') {
            $watermark = $this->create($file);
           
            $watermark_width = imagesx($watermark);
            $watermark_height = imagesy($watermark);
           
            switch($position) {
                case 'topleft':
                    $watermark_pos_x = 0;
                    $watermark_pos_y = 0;
                    break;
                case 'topright':
                    $watermark_pos_x = $this->info['width'] - $watermark_width;
                    $watermark_pos_y = 0;
                    break;
                case 'bottomleft':
                    $watermark_pos_x = 0;
                    $watermark_pos_y = $this->info['height'] - $watermark_height;
                    break;
                case 'bottomright':
                    $watermark_pos_x = $this->info['width'] - $watermark_width;
                    $watermark_pos_y = $this->info['height'] - $watermark_height;
                    break;
            }
           
            imagecopy($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, 120, 40);
           
            imagedestroy($watermark);
        }
e alterar por este:
Código: Selecionar todos
    public function watermark($file, $position = 'bottomright') {
       
      
       $watermark = imagecreatefrompng($file);
           
            $watermark_width  = imagesx($watermark);
            $watermark_height = imagesy($watermark);

            switch($position) {
                case 'topleft':
                    $watermark_pos_x = 0;
                    $watermark_pos_y = 0;
                    break;
                case 'topright':
                    $watermark_pos_x = $this->info['width'] - $watermark_width;
                    $watermark_pos_y = 0;
                    break;
                case 'bottomleft':
                    $watermark_pos_x = 0;
                    $watermark_pos_y = $this->info['height'] - $watermark_height;
                    break;
                case 'bottomright':
                    $watermark_pos_x = $this->info['width'] - $watermark_width;
                    $watermark_pos_y = $this->info['height'] - $watermark_height;
                    break;
             case 'center':
                $watermark_pos_x = ($this->info['width']- $watermark_width)/2;
                $watermark_pos_y = ($this->info['height']- $watermark_height)/2;
                break;
            }
           
            imagecopy($this->image, $watermark, $watermark_pos_x, $watermark_pos_y, 0, 0, $watermark_width, $watermark_height);
           
            imagedestroy($watermark);
        }
3- Alterar o arquivo catalog/model/tool/image.php

Localizar a linha:
Código: Selecionar todos
    $image = new Image(DIR_IMAGE . $old_image);
e logo abaixo acrescentar:
Código: Selecionar todos
    if ($width > 400 || $height > 300) {   
       $image->watermark(DIR_IMAGE . 'watermark.png', 'center');
    }
4- excluir os arquivos que estão em cache
image/cache/data/ "deletar todas as pastas aqui"
isso ira criar novos arquivos com a marca d'água.

agora só atualizar seu site e testar.
para quem quiser ver o resultado é só acessar http://www.jrcomerceweb.com.br

abraços.
#9565
Vejam se isso funciona (a última edição, na catalog/model/tool/image.php)
Código: Selecionar todos
    if (($width > 400 || $height > 300) AND (strpos($old_image,"slide") === FALSE)) {   
       $image->watermark(DIR_IMAGE . 'watermark.png', 'center');
    }
Agora, é só usar imagens que tenham a palavra "slide" no slideshow.

-- obs: não testado, estou resolvendo "de olho"
#9667
Pessoal olá!

Recebi a msg de erro
Notice: Undefined variable: image in /home/renatof/penelopeestilosa.com/loja/upload/catalog/model/tool/image.php on line 28
Fatal error: Call to a member function watermark() on a non-object in /home/renatof/penelopeestilosa.com/loja/upload/catalog/model/tool/image.php on line 28


Parece que ele não encontra o watermark.png que incluí no image.

Alguma sugestão ? tenho a v1.5.1.2

Obrigado!
#11695
Já havia aplicado na minha versão 1.4.9.6.
Agora para ter certeza, usei uma ferramenta de comparação de arquivos e nada foi mudado no primeiro arquivo até a versão 1.5.3.1. O segundo não verifiquei.

A solução do Renato Frota funcionou, e no meu caso, os banners estavam com nome bnX.png, então só troquei no código dele de "slide" para "bn".

Está perfeito aqui.

Obrigado!