Плагин Водяные знаки (Watermark)

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

В общем я думал думал и придумал.
Почему плагин? Ну его удобнее втыкать куда-нибудь - в альбом например.
Класс традиционно был стырен из свободных источников. Хелп оформлен на английском.
Зачем оно надо? К примеру у вас есть люди которые умеют добавлять картинки в альбом но не умеют нашлепнуть копирайт на них, я решил немного "автоматизировать" процесс нашлепки водного знака. Причем делать это будут те кто будет смотреть картинки :) (прямо как калитка у Эдисона).

Метод: плагин подхватывает урл или полный путь картинки (см. хелп к плагину), нашлепывает водный знак в указанном месте, сохраняет "проштампованный" рисунок и в отдельном файле его путь (чтобы не обрабатывать повторно). Если путь рисунка есть в списке то плагин его пропускает - код обработки идет после кода сравнения. Сам плагин никаких сообщений (кроме ошибок) не выводит. Также сделан минимальный размер для предотвращения обработки мелких изображений типа thumb_big-image

Нужны замечания, предложения и конструктив.
Я сделал некий файловый БД, хорошо ли это или плохо хранить в файле список "проштампованных" картинок? С одной стороны не хотелось плодить запросы на точный поиск, с другой я боюсь если счет записей будет большим то начнутся тормоза. (хотя путь этого файла настраивается wmlist и можно "разбить" на несколько файлов - типа для каждого шаблона отдельный файл путь прописывать.
Теоретически какой то watermark есть в "Calguys Module Extensions" но как оно работает я так и не понял и не нашел, хотя использовать его было бы (наверное) предпочтительнее (да, истинно проще написать код чем разбираться в чужом).
Ну и тестинг. Я нашел время только в шаблон Альбома спробовать, вот так примерно

Code: Select all

{* Big Picture *}
<div style="text-align:center">
{watermark watermarkedimg=`$picture->picture` wmposition='BL'}
<p class="bigpicturecaption"><strong>{$picture->name}</strong><br />
{$picture->comment}<br />
<span class="bigpicturenav">
{if $link.picture.previous}<a href="{$link.picture.previous}" title="Previous picture">< Previous</a>{/if}
 <span class= "albumpicturecount">( Picture {$picturenumber}/{$picturecount} )</span> 
{if $link.picture.next}<a href="{$link.picture.next}" title="Next picture">Next ></a></span>{/if}
</p>
<a href="" onmouseover="SMR_setLink(this);" target="_blank"><img src="{$picture->picture}" alt="{$picture->name|escape:'html'} - {$picture->comment|escape:'html'}" onload="SMR_resize(this, {$max_image_size});" title="{$picture->name|escape:'html'}  - {$picture->comment|escape:'html'}" /></a>
</div>
{/if}
Интересно где он может еще поработать и куда еще можно его "прикрутить".

Так что забирайте (нужно убрать txt и положить в папку plugins) но как обычно - никаких гарантий и претензий по работе плагина (особенно за испорченные картинки :)) только конструктив и предложения.

UPD добавлена другая версия, также плагин есть в Downloads->Tags
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

[The extension txt has been deactivated and can no longer be displayed.]

Last edited by Il_Burbero on Fri Jun 05, 2009 5:37 pm, edited 1 time in total.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Плагин Водяные знаки (Watermark)

Post by ZYV »

Ой с текстом если картинок будет много и они будут регулярно обновляться такая засада начнется, тем более наверняка ты блокировки не сделал, а даже если и сделал, всё равно при большой нагрузке некоторые FS начинают косячить...

На самом деле в базе, если включить индекс по единственному полю причем varchar небольшой длины точный поиск как раз будет быстрым достаточно, если не ошибаюсь. А как получить ключ varchar - ну так sha1 возьми и всех делов.
unsigned double ZYV;
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Плагин Водяные знаки (Watermark)

Post by von-hamster »

А почему не сделать немного по другому? Зачем сохранять путь для картинки в файле?
Я, например, в таких случаях поступаю следующим образом:
1. придумываю как будет получаться название результатирующего файла в зависимости от исходного. (например добавляю префикс или помещаю с тем-же именем но в другую папку - вариантов много).
2. Когда запрашивается файл - проверяю - существует ли результатирующий. Если нет - создаю и отображаю, если да, то просто отображаю.
И никаких заморочек с бд и текстовыми файлами.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Плагин Водяные знаки (Watermark)

Post by ZYV »

Ну вообще правильно, я что-то вчера не вдумался зачем эти файлы нужны.
unsigned double ZYV;
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

von-hamster wrote: А почему не сделать немного по другому? Зачем сохранять путь для картинки в файле?
Я, например, в таких случаях поступаю следующим образом:
1. придумываю как будет получаться название результатирующего файла в зависимости от исходного. (например добавляю префикс или помещаю с тем-же именем но в другую папку - вариантов много).
2. Когда запрашивается файл - проверяю - существует ли результатирующий. Если нет - создаю и отображаю, если да, то просто отображаю.
И никаких заморочек с бд и текстовыми файлами.
Мне такое в голову не пришло, вернее пришло что то вроде кэширования когда я думал создавать watermark "на лету", но я понял что "на лету" это дополнительные буферы, кэш и падение скорости и решил сделать перезапись файла.
Исходный файл можно удалить, я правильно понял (иначе картинок наплодится море)? Буду реализовывать :) префикс конечно нанесет удар по SEO пути изображения но "овчинка стоит выделки" :) и можно грамотный префикс в стиле "copyright"
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Плагин Водяные знаки (Watermark)

Post by ZYV »

Вот удалять не надо...
unsigned double ZYV;
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Плагин Водяные знаки (Watermark)

Post by von-hamster »

ZYV wrote: Вот удалять не надо...
Согласен. Вдруг захочешь поменять ватермарк - проще удалить созданые, чем звливать или восстанавливать бэкап.
Буду реализовывать  префикс конечно нанесет удар по SEO пути изображения но "овчинка стоит выделки"  и можно грамотный префикс в стиле "copyright"
Я, конечно, слабо в теме, но про пути картинок для SEO еще не слышал. Чем, скажем, будет хуже путь: /product/item_001.jpg чем /product/wm/item_001.jpg ?
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Плагин Водяные знаки (Watermark)

Post by ZYV »

И лучше путь к незавортермаркенным картинкам закрыть htacess или вынести за дерево сервера. А то умные люди догадаются где неиспорченные картинки взять :)
unsigned double ZYV;
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

Увы все ваши советы друзья мои не помогут. К сожалению смена пути невозможна по причине того что если альбом не стоит в режиме "автообновления", т.е. тупо тегом на страничке и вручную добавлять картинки то и пути к ним добавляются/вызыываются в/из БД! Засим переименование/перенос файлов не катят - т.к. потом нужно лезть в альбом и опять все "добавлять" а нужна "автоматика".
Так что буду писать в БД по совету
ZYV wrote: На самом деле в базе, если включить индекс по единственному полю причем varchar небольшой длины точный поиск как раз будет быстрым достаточно, если не ошибаюсь. А как получить ключ varchar - ну так sha1 возьми и всех делов.
Я так понимаю придется выделять табличку в БД и писать ее создание при первой инициализации плагина. Остальные способы отпали :(
И насчет "заштампленных картинок" вот тут уже идея "перемещения" и создания хтаксесса в тему, наверное так и сделаю - проверка на штампованность, перенос в папку типа "текущая папка_нештампованное", создание хтаксесса с запретом просмотра (достаточно его один раз и запретить просмотр всех файлов?), штамповка, запись в БД что файл отштампован.
Я, конечно, слабо в теме, но про пути картинок для SEO еще не слышал. Чем, скажем, будет хуже путь: /product/item_001.jpg чем /product/wm/item_001.jpg ?
Не совсем корректный пример :) /product/AMD-AthlonXP-3000.jpg очень информативно, в общем если такое имя плюс в грамотном оформлении тег img (с параметром alt="Processor AMD Athlon XP 3000 in front") то по запросу картинки "AMD AthlonXP 3000" картинка просто обязана быть на первых местах, поисковики анализируют названия файлов и соотносят с тегом alt :) если там и там напр AMD то вероятность того что на изображении AMD повышается...
Поэтому надо не ленится и обзывать картинки более информативно, особенно если с этих картинок ожидается доход, ну например те же товары в продаже...
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

Переделал плагин (второй аттач в топикстарте). Все описания в хелпе (теперь и на русском).
Возможности помимо основной: бэкап оригиналов в подпапку с "закрытием" файлов, запись хешей путей в БД для избежания повторной обработки.

Единственно что не работает прозрачность, хотя в классе она есть. Но разбиратся в альфаканалах и загружать скрипт еще разборами прозрачностей что то не тянет. Да и вообще создал потому что нету и просят, сам то я не особо фанат до "водяных знаков" и вообще копирайтов...
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Плагин Водяные знаки (Watermark)

Post by von-hamster »

Опять не понимаю, зачем БД. Если ты сохраняешь оригинал в подпапку - почему не проверять наличие оригинала? тоесть если есть оригинал в подпапке, то ничего не генерить, если нет - то обрабатывать.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

von-hamster wrote: Опять не понимаю, зачем БД. Если ты сохраняешь оригинал в подпапку - почему не проверять наличие оригинала? тоесть если есть оригинал в подпапке, то ничего не генерить, если нет - то обрабатывать.
Наверное потому что я тормоз... Спасибо за совет, переделаю...
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Плагин Водяные знаки (Watermark)

Post by Il_Burbero »

Сподобился я на релиз.
Класс заменил на более оптимальный и с поддержкой прозрачностей, правда пришлось его слегка подточить и добавить функцию для реальной альфапрозрачности PNG изображений, т.е. теперь прозрачный фон остается как в оригинале.
БД оставил т.к. заставлять пользователя бэкапить оригиналы нецелесообразно, а если он отключит бэкап то откуда брать инфу об обработанных картинках?
Положил Downloads->Tags
Post Reply

Return to “Russian - русский”