Тэг ‘ручками’

Водяные знаки на PHP

Проблема: иногда недобросовестные (или добросовестные, но без злого умысла и задней мысли) представители интернет-индустрии используют эксклюзивные авторские изображения без указания авторства и без всякого на то разрешения. Конечно, нормативные документы, гласящие об авторском праве в настоящее время упоминаются чуть ли не на каждом шагу; множество решений в суде, вынесенных в пользу автора…

Одним из способов указания авторства изображений, который довольно широко используется в Интернет - так называемые Watermark или Водяные знаки - изображения, содержащие информацию об авторе или сайте, для дальнейшего наложения на оригинальные авторские изображения.

В сети можно найти массу реализаций. Наиболее простым мне показался следующий вариант - наложение 8-битного (при желании - прозрачного) png-изображения (идентификатор в переменной $watermark_img_obj) с определенной прозрачностью ($alpha_level от 0 до 100) на основное изображение ($main_img_obj)

function watermark( $main_img_obj, $watermark_img_obj, $alpha_level = 100) {
$watermark_width = imagesx($watermark_img_obj);
$watermark_height = imagesy($watermark_img_obj);
$dest_x = imagesx($main_img_obj) - $watermark_width - 10; // правый
$dest_y = imagesy($main_img_obj) - $watermark_height - 10; // нижний угол изображения
imagecopymerge($main_img_obj, $watermark_img_obj, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $alpha_level);
return $main_img_obj;
}

Конечно, это не “супер-мегакласс” с кучей параметров, но защитить изображения водяным знаком функция позволяет сделать без особых сложностей. Можно написать свою, как, например тут. Можно воспользоваться готовыми классами - watermark от PixelJeck-а, imagemanipulator, который предоставляет гораздо более широкие возможности для работы с изображениями, или же написать свой.

Еще, думаю, есть смысл обратить внимание на ImageMagic, а точнее на его интерфейс в php - IMagick.

Как лучше расположить надпись/водяной знак на изображении, чтобы с одной стороны сохранить информацию об авторе изображения, а с другой - не испортить изображение… Нельзя забывать, что желательно, чтобы посетитель мог сконцентрироваться не на водяном знаке, а на самом изображении.

Для Wordpress существует отдельный плагин wp-watermark, который кстати можно использовать для массового наложения водяных знаков на все файлы из каталога.

Любой класс или функцию можно взять за основу для своих наработок, которые в дальнейшем можно использовать как готовые “кирпичики” в своих проектах. Перерабатывая классы и функции “под себя” не только лучше вникаешь в алгоритм самой функции, но и можешь сделать то, что считаешь нужным. :)

Удачи!

Опубликовано Май 5, 2009 | автор: levik  |  Нет комментариев »

СURL в PHP (libcurl)

CURL (Client URL Library), libcurl - библиотека функций для работы с серверами по различным протоколам (http, ftp, https … и ряд других - более подробно смотрите описание последней версии).

В php включена  (если точнее, имеется возможность включить - зависит от конфигурации сервера) поддержка curl. Проверить, поддерживается ли сервером функции curl проще всего, произведя вызов любой из функций, например
<?php
$ch = curl_init("http://www.example.com/");
?>

Если исполнение этого кода не приведет к ошибке - все в порядке, можем использовать CURL в “корыстных целях”. Если же “функция не существует”… Но, впрочем, это уже совсем другая история. А пока вернемся к нашим.. CURL ам.

В PHP самый простой вариант использования библиотеки обычно  сводится к следующим шагам:

Инициализация - curl_init($url);
Установка параметров - curl_setopt($ch, $opt, $value);
Выполнение запроса - curl_exec($ch);
// Получение и обработка информации - обычно хватает результата, возвращенного предыдущей функцией, однако, существует несколько дополнительных функций, например curl_getinfo($ch);
Закрытие - curl_close($ch);

Особенности и подводные камни:
CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR при работе в  WINDOWS будут правильно работать только при указании полного пути к файлу.

Опубликовано Апрель 7, 2009 | автор: levik  |  Нет комментариев »

OsCommerce - замеченные глюки-баги

Решил собрать некоторые глюки Oscommerce (версии и сборки различные) , потому как порой, как оказалось, они встречаются чаще одного раза.. А когда помнишь, что ты уже это делал.. и не помнишь, как.. а поиск выдает что-то не то..

Возможно, окажется полезным не только мне..

OsCommerce не отображает некоторые товары

Поскольку в этом SHOP-монстре куча всевозможных настроек, следует убедиться, что “скрытый” от глаз посетителя товар не отключен этими настройками. Естественно, если один товар отображается, а другой - нет, следует… сравнить атрибуты/параметры этих товаров в админ панели Oscommerce или непосредственно в базе. В моем случае, для не отображаемых товаров просто не был указан производитель.

OsCommerce не добавляет некоторые товары в корзину

Столкнулся с “чудесами” - все товары (все проверенные - порядка 30) в корзину добавляются нормально, один - ну никак не хочет. При попытке добавить в корзину происходит переход на пустую корзину.
Проблема оказалась в добавлении к атрибуту action в теге form дополнительного параметра &sid=id_sesion..

Oscommerce не дает войти в админ центр

Проблема оказалась в принудительной установке Cookies - поправил изменением значения в таблице configuration (непосредственно в базе)

Oscommerce выдает ошибку при обновлении версии MySQL

При обновлении базы MySQL, используемой OsCommerce с версии 4 на версию 5, магазин “радует” нас англоязычными сообщениями об ошибках. Поиск по аглицким форумам помог решить проблему - в свое время  пару часов пришлось повозиться. Однако, сейчас уже и не вспомню… Если повторится - дополню…

На самом деле, несмотря на кажущуюся “громоздкость”, oscommerce , если разобраться, не такой уж сложный магазин. Наличие форумов, как русскоязычных, так и забугорных, дает возможность вникнуть и решить практически любую проблему.. (не путать с “проблему решат за тебя”.. хотя, обычно, вопрос цены…)

Опубликовано Август 19, 2008 | автор: levik  |  Нет комментариев »