Работает на OpenCart 1.4.9.1/2/3
1. Создайте PNG водяной знак, назовите его watermark.png и скопировать его в image/.
2. Теперь необходимо отредактировать 2 PHP файла
3. Первый файл: system/library/image.php
линий 93-121, и вы увидите следующий код:
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);
}
заменить на
public function watermark($file, $position = 'bottomright') {
//Pb ! you don't work on the true object => you must modify the "create" method ($mime = $this->info['mime']; it's work only if we have the same image format !
//$watermark = $this->create($file);
//Prefer PNG files => it's not optimized but it's work
$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);
}
4.Второй файл для редактирования catalog/model/tool/image.php
Перейти к строке 27, и вы увидите следующий код:
$image = new Image(DIR_IMAGE . $old_image);
после него вставить следующий код:
{
if ($width > 400 || $height > 300)
{
$image->watermark(DIR_IMAGE . 'watermark.png', 'center');
}
}
В коде выше, вы можете определить нужное положение водяного знака (topleft, topright, bottomleft, bottomright or center).
Вы можете также определить минимальную ширину или высоту вашего изображения на которых водяной знак будет добавлен.
5. Заключительный шаг: удалить все данные в папке image/cache/data, чтобы создалиь изображения с водяными знаками.
Вот и все! Удачи!
Надеюсь, я помог тем, у кого проблемы принятия водяные знаки работы.