В скрипте есть возможность наложения водного знака при выводе изображения то есть, на лету. На мой взгляд это не всегда оправдано да и создает дополнительную нагрузку на сервер тем более если у нас он виртуальный.
Для того что-бы наложить водный знак при загрузке изображения нужно модифицировать файл: admin_upload.php
в него добавим следующий код:
PHP код:
$watermark = get_setting_value($settings, "watermark_super_image", 0);
if ($watermark) {
$watermark_image = get_setting_value($settings, "watermark_image", "");
$watermark_image_pos = get_setting_value($settings, "watermark_image_pos", "");
$watermark_image_pct = get_setting_value($settings, "watermark_image_pct", "");
$watermark_text = get_setting_value($settings, "watermark_text", "");
$watermark_text_size = get_setting_value($settings, "watermark_text_size", "");
$watermark_text_color = get_setting_value($settings, "watermark_text_color", "");
$watermark_text_angle = get_setting_value($settings, "watermark_text_angle", "");
$watermark_text_pos = get_setting_value($settings, "watermark_text_pos", "");
$watermark_text_pct = get_setting_value($settings, "watermark_text_pct", "");
image_watermark($images_root.$super_dir_suffix.$uploaded_filename, '../'.$watermark_image, $watermark_image_pos, $watermark_image_pct, $watermark_text, $watermark_text_size, $watermark_text_color, $watermark_text_angle, $watermark_text_pos, $watermark_text_pct, $images_root.$super_dir_suffix.$uploaded_filename);
}
Он достаточно простой, в основном получаем настройки и в самом низу вызываем функцию наложения image_watermark. Она стандартная от Viart так что не пришлось писать другую.
Добавляем код где-то за строкой 344 файла admin_upload.php после создания уменьшенных изображений.
Было:
PHP код:
if ($resize_super_image) {
$super_width = get_setting_value($settings, "super_image_max_width", 1024);
$super_height = get_setting_value($settings, "super_image_max_height", 768);
if (@resize($uploaded_filename, $filepath, $images_root.$super_dir_suffix, $super_width, $super_height, $errors)) {
@chmod($images_root.$super_dir_suffix.$uploaded_filename, 0766);
}
}
Стало:
PHP код:
if ($resize_super_image) {
$super_width = get_setting_value($settings, "super_image_max_width", 1024);
$super_height = get_setting_value($settings, "super_image_max_height", 768);
if (@resize($uploaded_filename, $filepath, $images_root.$super_dir_suffix, $super_width, $super_height, $errors)) {
@chmod($images_root.$super_dir_suffix.$uploaded_filename, 0766);
}
$watermark = get_setting_value($settings, "watermark_super_image", 0);
if ($watermark) {
$watermark_image = get_setting_value($settings, "watermark_image", "");
$watermark_image_pos = get_setting_value($settings, "watermark_image_pos", "");
$watermark_image_pct = get_setting_value($settings, "watermark_image_pct", "");
$watermark_text = get_setting_value($settings, "watermark_text", "");
$watermark_text_size = get_setting_value($settings, "watermark_text_size", "");
$watermark_text_color = get_setting_value($settings, "watermark_text_color", "");
$watermark_text_angle = get_setting_value($settings, "watermark_text_angle", "");
$watermark_text_pos = get_setting_value($settings, "watermark_text_pos", "");
$watermark_text_pct = get_setting_value($settings, "watermark_text_pct", "");
image_watermark($images_root.$super_dir_suffix.$uploaded_filename, '../'.$watermark_image, $watermark_image_pos, $watermark_image_pct, $watermark_text, $watermark_text_size, $watermark_text_color, $watermark_text_angle, $watermark_text_pos, $watermark_text_pct, $images_root.$super_dir_suffix.$uploaded_filename);
}
}
Кстати я добавлял его только для оригинальных изображений, но по аналогии вы можете добавить и для наложения на другие изображения.
Может не совсем корректно было накладывать изображение после его уменьшения т.к. если изображение не будет уменьшаться, то и водного знака мы не получим, но мне этого было достаточно.
Кстати есть небольшая засада
по коду:
PHP код:
$watermark = get_setting_value($settings, "watermark_super_image", 0);
Получает значение параметра "накладывать изображение или нет"
и получается задваение, изображение накладывается при загрузке и при этом потом пытается наложить при выводе. Для исправления нужно убрать условие, тогда водяной знак будет накладываться всегда при загрузке.
Или править блок вывода изображения в файле: block_product_details.php. Я остановился на постоянном наложении при загрузке.
Код в итоге стал такой:
PHP код:
if ($resize_super_image) {
$super_width = get_setting_value($settings, "super_image_max_width", 1024);
$super_height = get_setting_value($settings, "super_image_max_height", 768);
if (@resize($uploaded_filename, $filepath, $images_root.$super_dir_suffix, $super_width, $super_height, $errors)) {
@chmod($images_root.$super_dir_suffix.$uploaded_filename, 0766);
}
$watermark_image = get_setting_value($settings, "watermark_image", "");
$watermark_image_pos = get_setting_value($settings, "watermark_image_pos", "");
$watermark_image_pct = get_setting_value($settings, "watermark_image_pct", "");
$watermark_text = get_setting_value($settings, "watermark_text", "");
$watermark_text_size = get_setting_value($settings, "watermark_text_size", "");
$watermark_text_color = get_setting_value($settings, "watermark_text_color", "");
$watermark_text_angle = get_setting_value($settings, "watermark_text_angle", "");
$watermark_text_pos = get_setting_value($settings, "watermark_text_pos", "");
$watermark_text_pct = get_setting_value($settings, "watermark_text_pct", "");
image_watermark($images_root.$super_dir_suffix.$uploaded_filename, '../'.$watermark_image, $watermark_image_pos, $watermark_image_pct, $watermark_text, $watermark_text_size, $watermark_text_color, $watermark_text_angle, $watermark_text_pos, $watermark_text_pct, $images_root.$super_dir_suffix.$uploaded_filename);
}
Остается нюанс в том что водный знак будет накладываться только при уменьшении изображения.
Социальные закладки