Модуль водяного знака для imce

Главные вкладки

Аватар пользователя Nikit Nikit 9 июня 2009 в 6:01

По запросам http://drupal.ru/node/24185 выставил модуль на всеобщее обозрение:
http://drupal.org/project/imce_watermark

Пока только дев-версия для тестирования и дополнения.
Изучил как выставлять проекты на друпал.орг, немного муторно для начала, так что возможны "глюки" с архивами, с нумерациями версий и так далее.

Комментарии

Аватар пользователя kodo kodo 10 ноября 2015 в 11:46

Попробовал, модуль очень хороший и главное вовремя для меня. Единственно у меня не получается прозрачный фон у watermark. Делаю фотошопом с сохранением для веб. Настройки прилагаю. Подскажите, что не так плиз.

Аватар пользователя kodo kodo 10 июня 2009 в 15:23

Ну вот только попросил помощь клуба и сразу получилось... поставил в настройках не 128 цветов, а 256... странно, что это помогло но заработало.

Аватар пользователя PVasili PVasili 10 июня 2009 в 15:43

kodo - количество цветов к прозрачности не имеет ни какого отношения. Можно и в 2 цветах сделать прозрачность.
Nikit - альфа PNG-шку бы, бо 99% используют её.

Аватар пользователя Nikit Nikit 11 июня 2009 в 2:33

2digital_sword: модуль image вроде имеет свой watermark, насчёт cck image field не скажу.

2kodo: у png есть понятие прозрачности, я не дока в этом деле, но знаю что в фотошопе, например, он видна как шахматная доска на фоне рисунка Smile спросите спецов.

2PVasili "Nikit - альфа PNG-шку бы, бо 99% используют её." - не совсем понял, но я использую imagecopymerge($main_img_obj, $watermark_img_obj, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, variable_get('imce_watermark_alpha', 90)); - указание на альфа-прозрачность, или это нето?

И еще есть такое: предлагают как альтернативу модуль imagecache_actions, она делает ватермарки, но есть одно отличие: она не трогает оригиналы, а иногда это нужно, к тому же настройка сие дела сложнее, чем подтянуть imce к редактору визивиг. p.s. Вот отсюда постараюсь выдрать код для поддержки png другой битности Smile

Аватар пользователя PVasili PVasili 11 июня 2009 в 12:44

"Nikit" wrote:
не совсем понял,
- альфа прозрачность есть только у PNG24. PNG8, как и GIF использует только 1 канал прозрачности. есть/нет и все.

Аватар пользователя andypost@drupal.org andypost@drupal.org 12 июня 2009 в 16:12

Полезный модуль!

Nikit пожелание - попробовать использовать imageAPI, я обычно пользуюсь хостингами, где установлен imagemagick - это дело существенно внижает требования php к памяти, так как обрабатывает bitmap в памяти другого процесса. А твоя операция будет держать в памяти сразу 2 изображения, причем оба декомпрессированные .

Аватар пользователя kodo kodo 12 июня 2009 в 16:26

Nikit Для развития функциональности модуля. Если будет возможность, добавить установку водяного знака на уже существующие картинки, как для создания Thumbnails. Думаю для многих случаев очень полезная вещь.
И еще сомнительно, но может быть интересно, чтобы при закачке изображения вначале накладывался водяной знак, а затем создавались Thumbnails. Но тут спорный момент надо ли это.
Еще раз спасибо за модуль!

Аватар пользователя MasterJedi MasterJedi 10 ноября 2009 в 22:33

При попытке загрузить рисунок IMCE выдает лог:

21:24:46 warning: imagecreatefromjpeg(sites/default/files/PNG_transparency_demonstration_2%5B1%5D.png) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/bla_bla_bla/public_html/modules/imce_watermark/imce_watermark.module on line 158.
21:24:46 warning: imagecopymerge(): supplied argument is not a valid Image resource in /home/bla_bla_bla/public_html/modules/imce_watermark/imce_watermark.module on line 197.
21:24:46 warning: imagejpeg(): supplied argument is not a valid Image resource in /home/bla_bla_bla/public_html/modules/imce_watermark/imce_watermark.module on line 161.

У меня что-то с правами на директории или грабли в строках

$img = imagecreatefromjpeg($dirpath . '/' . $filename);

imagejpeg($im, $dirpath .  '/' . $filename);

imagecopymerge($main_img_obj, $watermark_img_obj, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height,
      variable_get('imce_watermark_alpha', 90)
    );

Drupal 6.14. Модуль установлен в /modules соответственно.

Аватар пользователя vasilev vasilev 27 декабря 2010 в 17:16

Nikit, Как научить модуль накладывать водяные изображения не только на .jpg (.jpeg), но и на картинки .gif и .png ?

в файле /modules/imce_watermark/imce_watermark.module (строка 157-161) меняя расширение jpeg на gif или png - работает, то какой пропишешь.

$watermark = new watermark2();
  $img = imagecreatefromjpeg($dirpath . '/' . $filename);
  $water = imagecreatefrompng($watermark_filepath);
  $im = $watermark->create_watermark($img, $water);
  imagejpeg($im, $dirpath .  '/' . $filename);
Аватар пользователя Nikit Nikit 28 декабря 2010 в 2:43

хм, только заметил что тут столько комментов, я его совсем забросил, будем исправлять.
В общем идея не изобретать велосипед, а использовать имеющееся, если на сайте будут imagecache + imagecache_actions, то они будут использоваться для рисования водяных знаков (там уже есть ватермарк, плюс конвертация gif,png на jpeg), плюсы - ui настройка. Если нет, то прямые функции рисования ватермарка, возможности которого остануться почти такими же.

Аватар пользователя vasilev vasilev 28 декабря 2010 в 9:49

да собственно ваш модуль хорош для ватермарков при загрузке через imce.

если дописать после

  $watermark = new watermark2();
  $img = imagecreatefromjpeg($dirpath . '/' . $filename);
  $water = imagecreatefrompng($watermark_filepath);
  $im = $watermark->create_watermark($img, $water);
  imagejpeg($im, $dirpath .  '/' . $filename);

такой код

  $img = imagecreatefromgif($dirpath . '/' . $filename);
  $water = imagecreatefrompng($watermark_filepath);
  $im = $watermark->create_watermark($img, $water);
  imagegif($im, $dirpath .  '/' . $filename);

  $img = imagecreatefrompng($dirpath . '/' . $filename);
  $water = imagecreatefrompng($watermark_filepath);
  $im = $watermark->create_watermark($img, $water);
  imagepng($im, $dirpath .  '/' . $filename);

загрузка картинок и наложение водяных знаков будет работать, только после загрузки всплывает от 5 до 10 сообщений об ошибках.

в целом работает, только надо как то правильно доделать...

посмотреть можно тут
http://sdelay-sam.su/user
логин: testimce
пароль test
на странице
http://sdelay-sam.su/imce

пока убрал эти строки, но ошибки при загрузке gif и png (всего что не jpeg) всплывают

Аватар пользователя MasterJedi MasterJedi 28 декабря 2010 в 15:59

Да, хорош! Уже начинает что-то вырисовываться. Теперь нужна лишь работа над ошибками от автора Nikit и соответственно выпуск новой версии.

2 vasilev, кстати потестил (спасибо за выложенный логин и пасс к demo) - т.е. если использовать соответствующие функции imagegif, imagepng, ошибки все равно вылезают?

Аватар пользователя vasilev vasilev 28 декабря 2010 в 22:58

MasterJedi wrote:
Да, хорош! Уже начинает что-то вырисовываться. Теперь нужна лишь работа над ошибками от автора Nikit и соответственно выпуск новой версии.

2 vasilev, кстати потестил (спасибо за выложенный логин и пасс к demo) - т.е. если использовать соответствующие функции imagegif, imagepng, ошибки все равно вылезают?

Да, ошибки лезут, но функционал при этом работает. водяные знаки накладываются. Просто как-то правильно надо это прописать, не так как я...

Аватар пользователя shamkir shamkir 28 декабря 2010 в 23:06

"vasilev" wrote:
загрузка картинок и наложение водяных знаков будет работать, только после загрузки всплывает от 5 до 10 сообщений об ошибках.
в целом работает, только надо как то правильно доделать...

Нужно просто создать условие вместо этой строки $img = imagecreatefromjpeg($dirpath . '/' . $filename);. То есть если файл jpg то выполнять $img = imagecreatefromjpeg($dirpath . '/' . $filename); если png выполнять imagecreatefrompng итд. Необходимо получить содержимое переменной $filename и ее уже проверять, возможно в ней и содержится имя и расширение файла(у меня получить содержимое этой переменной не получилось :(), ну а потом через регулярное выражение проверять расширение и выполнять вышеуказанные функции

Аватар пользователя Nikit Nikit 29 декабря 2010 в 13:19

у меня была функция которая читает маймы, как найду, проверю на надежность. Пока у меня дидлайны все как один до 31-ого, после начну cvs-ить - квасить Smile

Аватар пользователя Funtik44 Funtik44 8 февраля 2011 в 22:47

Народ, а как при помощи Imagecache Actions для всех загружаемых картинок (посредствам IMCE) ресайз сделать? Какое название у пресета imaagecash должно быть, чтобы на все имеджи распространилось?

Аватар пользователя Nikit Nikit 27 мая 2011 в 1:17

"vasilev" wrote:
Думаю никак не свяжешь Imagecache с IMCE

Сейчас побочный эффект imce_watermark такой, что позволяет использовать imagecache, только один из actions должен быть "Overlay (watermark)".
p.s. Хотя есть мысль сделать его не побочным, а постоянным Smile

Аватар пользователя Funtik44 Funtik44 8 апреля 2011 в 13:27

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
напротив есть масса решений inline insert и тп

А что такое inline inser, модуль? Если нет, то что и как с этим работать?

Аватар пользователя Nikit Nikit 27 мая 2011 в 1:12

ух, наконец-то руки дошли разобраться с GIT. Обновил модуль до branch 2.
Теперь она требует imagecache_canvasactions.module (часть imagecache_actions), и все настройки (позиция, альфа), вопросы о методах и способах добавления ватермарка туда.

Аватар пользователя RedDemon RedDemon 3 сентября 2011 в 22:25

Nikit, скажите пожалуйста возможно ли использовать модуль imce watermark для cck image field пытался настроить никак не выходит