Перейти к содержимому


Партнерская программа Kredov

Позиционирование watermark при наложении через PHP

#1 artik77

artik77
  • Пользователь
  • 2 сообщений
  • Репутация: 0
0

Отправлено 16 Март 2014 - 23:25

Привет ребята. Подскажите пожалуйста решение. При загрузке изображения - watermark клеится строго по центру картинки. Как настроить чтобы оно например было в правом нижнем углу?
Вот код который преобразует:

//Конфиг для картинок
          $config = array(
            0        => null, //Оригинальное изображение сохраняется без изменений
            'thumb'  => array(
              Image::RESIZE => array('width' => 160, 'height' => 120)
            ),
            'medium' => array(
              Image::RESIZE => array('width' => 300, 'height' => 230)
            ),
            'big'    => array(
              Image::RESIZE => array('width' => 800, 'height' => 800, 'watermark' => DOCROOT . '/inc/watermark.png')
            ),
          );
//ЗАДАЕМ КАК БУДЕТ ПЕРЕЖАТО ИЗОБРАЖЕНИЕ
                foreach ($config as $size => $arr) {
                  if (is_array($arr)) {
                    foreach ($arr as $action => $attr) {
                      if (empty ($attr['height'])) {
                        $attr['height'] = null;
                      }
                      if (empty ($attr['width'])) {
                        $attr['width'] = null;
                      }

                      $name = $new_name . (empty ($attr['one']) ? '_' . $i : '');

                      $image->clean();
                      switch ($action) {
                        case Image::CROP:
                          $image->crop($attr['width'], $attr['height']);
                          break;
                        case Image::RESIZE:
                          $image->resize($attr['width'], $attr['height'], (!empty($attr['non_prop']) ? true : false));
                          break;
                        default:
                          continue;
                      }

                      if (isset ($attr['watermark'])) {
                        $image->watermark($attr['watermark']);
                      }
                    }
                  } else {
                    $name = $new_name . (empty ($attr['one']) ? '_' . $i : '');
                  }
                 //СОХРАНЯЕМ ФАЙЛ
                  $image->save($name . (is_numeric($size) ? '' : '_' . $size) . '.jpg');
                }
                //Удаляем временный файл
                unlink($tmp_filename);

                echo '1';
              } else {
                echo 'Error yeah!';
              }

              break;
          }
        }

 

 


 

 

  • 0

#2 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 18 Март 2014 - 19:22

Вам нужно при наложении watermark указать координаты. Смотрите в сторону функции imagecopy если не ошибаюсь, и в приведённом коде не весь нужный функционал, поэтому подробнее сказать не могу


  • 0

#3 artik77

artik77
    Topic Starter
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 19 Март 2014 - 08:29

Спасибо. Уже нашел в другом файле. 

imagecopy ( $source, $watermark, ceil(($s_width-$w_width)/2), ceil (($s_height-$w_height)/2), 0, 0, $w_width, $w_height );

  • 0


Оформление форума – IPBSkins.ru