Вариант изображений с водяными знаками на php

Публикация № 329972 16.02.15

Приемы и методы разработки - Защита ПО и шифрование

Предлагаю вариант использования изображений с наложением водяных знаков на хостинге с использованием php.

Что есть:

  • - хостинг с изображениями;
  • - изображения разбросанные по папкам. Максимальное количество в папках 1000 шт.;
  • - формат изображений jpg и png;
  • - водяные знаки;
  • - небольшой скрипт php, для наложения водяных знаков.

Для чего:

                Многие из вас выгружают свой товар с изображениями на торговые площадки (Аукро, Пром и т.п.). Наложение водяных знаков на этих площадках конечно есть, но ограниченное. Бывает просто изображение или текст, что маловато. Можно конечно сразу наложить водяные знаки, но это долго.  Бывает площадки вводят ограничение на водяные – нельзя указывать адрес сайта на аукро. Данным способом можно обойтись одним экземпляром фотографии, с возможностью наложения множества разных водяных знаков.

Как это работает:

                По запросу http://imgt.вашсайт/14?w=as будет получена картинка с именем 14(jpg,png) с водяным знаком as.png. Если водяной не указывать, то но будет по умолчанию (water.png). Водяные знаки расмещены в папке water. Если картинки нет, то выведеться изображение nofoto.jpg.

 

Файл .htaccess делает жёсткую переадресацию на img.php, получить фото без водяных не выйдет. Содержимое .htaccess :

DirectoryIndex img.php

<IfModule mod_rewrite.c>

                RewriteEngine on

                # Переадресация на img.php

                RewriteRule .$ /домен/imgt/img.php [NC]

</IfModule>

 

Файл img.php производит все функции. Содержимое img.php :

<?php

// Не выводить ошибки
//error_reporting(0);


Get_Image();


function images_search($path, $filename) {
if(($dir = opendir($path)) == FALSE)
return '';
$link = '';
while(($fp = readdir($dir)) !== FALSE) {
$link = $path . '/' . $fp;
if(is_file($link)) {
if($fp == $filename.'.jpg' || $fp == $filename.'.png') {
closedir($dir);
return $link;
}
}else if(! ereg('^[\.]{1,2}$', $fp) && is_dir($link)) {
if($fp != 'water'){
if(($link = images_search($link, $filename)) != '') {
closedir($dir);
return $link;
}
}
}
}
closedir($dir);
return '';
}

// выводим картинку
function Get_Image() {

// Идентификатор изображения
$img_id = strrev($_SERVER[SCRIPT_URL]);
$img_id = strrev(substr($img_id, 0, strpos($img_id,'/')));
$img_id = preg_replace('/[^0-9]/', '', $img_id);


// Идентификатор водяного знака
if (empty($_GET['w'])){
$water_id = 'water';
}else{
$water_id = preg_replace('/[^a-zA-Z0-9]/', '', $_GET['w']);
}

$enable_water = true;

if (!empty($_GET['nw'])){
if ($_GET['nw'] == "1478963") {
$enable_water = false;
}
}

// Изображение
if($img_id == ''){
$image_file = '/home/nsait/seul.net.ua/imgt/nofoto.jpg';
$enable_water = false;
}else{
$image_file = images_search("./", $img_id);
if($image_file){
$image_file = str_replace("./", "/home/nsait/seul.net.ua/imgt", $image_file);
}else{
$image_file = '/home/nsait/seul.net.ua/imgt/nofoto.jpg';
$enable_water = false;
}
}

$pos = strripos($image_file, ".jpg");

//echo $image_file;
//exit;

if ($pos === false) {
$image = imagecreatefrompng($image_file);

//Отключаем режим сопряжения цветов
//imagealphablending($image, false);

//Включаем сохранение альфа канала
imagesavealpha($image, true);

} else {
$image = imagecreatefromjpeg($image_file);
}


if ($image === false) {
return false;
}


if($enable_water){
// Водяной знак
$watermark_file = '/home/nsait/seul.net.ua/imgt/water/'.$water_id.'.png';

if(!file_exists($watermark_file)){
$watermark_file = '/home/nsait/seul.net.ua/imgt/water/water.png';
}
$watermark = imagecreatefrompng($watermark_file); // создаЄм вод¤ной знак


//если что-то пойдЄт не так
if ($watermark === false) {
return false;
}

// получаем значени¤ высоты и ширины изображени¤
$image_width = imagesx($image);
$image_height = imagesy($image);

// получаем значени¤ высоты и ширины вод¤ного знака
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);


$rate_width = $image_width/$watermark_width;
$rate_height = $image_height/$watermark_height;

if ($rate_width > $rate_height)
$rate = $rate_height;
elseif ($rate_width < $rate_height)
$rate = $rate_width;
elseif ($rate_width = $rate_height)
$rate = $rate_height;


// Если
if ($rate < 1) {
$watermark_width = $watermark_width*$rate;;
$watermark_height = $watermark_height*$rate;

$new_watermark = imageCreateTrueColor($watermark_width, $watermark_height);
imageAlphaBlending($new_watermark, false);
imageSaveAlpha($new_watermark,true);
imageCopyResampled($new_watermark, $watermark, 0, 0, 0, 0, $watermark_width, $watermark_height, imagesx($watermark), imagesy($watermark));
} else {
$new_watermark = $watermark;
}


// помещаем вод¤ной знак на изображение
$dest_x = $image_width - $watermark_width;
if ($dest_x <> 0)
$dest_x = $dest_x/2;

$dest_y = $image_height - $watermark_height;
if ($dest_y <> 0)
$dest_y = $dest_y/2;

// создаем новое изображение
imagecopy($image, $new_watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);

// освобождаем память
imagedestroy($watermark);
imagedestroy($new_watermark);
}

if ($pos === false) {
header('content-type: image/png');
imagepng($image);

} else {
header('content-type: image/jpeg');
imagejpeg($image, null, 100);
}

// освобождаем память
imagedestroy($image);

}


?>


Специальные предложения

Оставьте свое сообщение

См. также

От Hello world - к защите конфигураций за 1 минуту Промо

Защита ПО и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    36054    O-Planet    130    

Найти и уничтожить. Популярные уязвимости в проектах 1С

Защита ПО и шифрование Роли и права Пароли Бесплатно (free)

Самые опасные проблемы в конфигурациях 1С – это уязвимости. О том, чем они могут быть опасны, и как их находить автоматически, рассказал Олег Тымко, ведущий разработчик в компании «Серебряная пуля».

03.11.2021    4483    olegtymko    8    

Информационная безопасность 1С: Памятка для Обновлятора 1С

Пароли Защита ПО и шифрование v8 БП3.0 Бесплатно (free)

— Три магнитофона, три кинокамеры заграничных, три портсигара отечественных, куртка замшевая... три...

10.12.2020    4481    Indgo    63    

Безопасный переезд базы 1С с персональными данными в облако

Облачные сервисы, хостинг Защита ПО и шифрование Россия Бесплатно (free)

Рассказываю о нюансах, на которые следует обратить внимание при выборе облачного провайдера для размещения баз 1С, заключения с ним договора и прочего взаимодействия, не нарушая 152-ФЗ "О персональных данных"

23.06.2020    2899    some_one    2    

Обезличивание базы средствами Конвертации данных 2

Защита ПО и шифрование v8 КД Бесплатно (free)

Быстро, просто, понятно обезличить нужные данные в любой базе.

14.06.2020    3763    Yashazz    21    

Расшифровка DataMatrix кода с пачки сигарет (табачная продукция)

Защита ПО и шифрование v8 Россия Бесплатно (free)

Разбор считанного DataMatrix кода с пачки сигарет - какие символы за что отвечают. Декодирование МРЦ

07.06.2020    13362    Tasselhof    10    

Кодирование по алфавиту. Большие целые числа

Защита ПО и шифрование v8 1cv8.cf Бесплатно (free)

А вы знали, что 1С умеет в очень длинные числа? Кодирование информации в строку по указанному алфавиту, возможен любой алфавит и не только. В тексте приведён алгоритм для кодирования последовательности байт в любой и из любого односимвольного алфавита.

14.05.2020    2410    mrsmrv    5    

Защита авторских прав на софт: что нужно знать об этом и зачем

Инструкции пользователю Защита ПО и шифрование Бесплатно (free)

Разработчикам программ важно помнить некоторые правила об авторских правах, чтобы обезопасить себя от воровства. Пользователям программ тоже нужны определенные знания, чтобы не оказаться на скамье подсудимых по обвинению в пиратстве. О чем конкретно нельзя забывать ни разработчикам, ни пользователям, рассказала участникам конференции INFOSTART EVENT 2019 Inception заместитель директора НП ППП, координатор по вопросам защиты ИС 1С Анна Лавринова.

06.05.2020    7628    1C_lava    10    

SHA512 и HMAC512 на 1С 8 без использования внешних компонент

Защита ПО и шифрование v8 1cv8.cf Бесплатно (free)

Имплементация алгоритма расчета Hash 512 с ключом и без. С ключом по алгоритму HMAC. Используются механизмы платформы начиная с версии 8.3.11.

29.04.2020    4100    mrsmrv    25    

Криптография и электронная подпись в решениях на 1С

Защита ПО и шифрование Бесплатно (free)

Андрей Глебов, докладчик конференции Infostart Event 2017 Community, делает обзор нормативной базы РФ по теме электронной подписи. Рассказывает о возможностях криптографии в платформе «1С:Предприятие 8» и ее расширении через технологию создания внешних компонент. Также он описывает функционал подсистемы «Электронная подпись» в конфигурации «1С:Библиотека стандартных подсистем», приводит примеры использования криптографии в сервисах «1С-ЭДО» и «1С:ДиректБанк», дает рекомендации по разработке собственных решений с криптографией и устранению проблем при запуске электронного документооборота на предприятиях.

13.08.2018    75043    chat007    45    

Танцы с бубном! Создаём демонстрационную базу

Защита ПО и шифрование v8 Бесплатно (free)

В статье кратко расскажу Вам о моём опыте создания демонстрационной версии базы данных 1С и способах защиты кода.

08.02.2018    17062    user748289    41    

Симметричное шифрование в 1С

Защита ПО и шифрование v8 1cv8.cf Бесплатно (free)

Настоящая статья посвящена реализации в 1С симметричного шифрования встроенными механизмами

02.06.2015    29230    alex271    8    

Защита конфигурации от ...

Защита ПО и шифрование v8 v8::УФ 1cv8.cf Бесплатно (free)

(©Топчий Д.Ю.) Бывают моменты в жизни, когда нужно сделать возможность входа только одному пользователю после определенного времени. Ниже приведен такой код.

18.05.2015    19384    hakerxp    28    

Хеширование данных с ключом по алгоритму SHA-1 штатными средствами 1С

Защита ПО и шифрование v8 1cv8.cf Бесплатно (free)

Расчет хеш суммы данных по алгоритму SHA-1 с ключом штатными средствами 1С.

27.05.2014    31329    dour-dead    16    

Про использование криптографии в 1С

Защита ПО и шифрование Россия Бесплатно (free)

В последнее время очень популярной стала тема использования шифрования и цифровой подписи (ЭЦП). Возможности удобного использования криптографических преобразований встроены и в 1С. Однако достаточно много людей упускают один важный момент - почти все прикладные решения, использующие криптографию, должны быть выполнены исключительно при наличие лицензии ФСБ. Об этом и пойдёт речь в данной статье.

09.09.2013    36921    y-str    153    

Разрабатываем систему защиты авторских прав. Урок 1. Мозговой штурм

Защита ПО и шифрование Бесплатно (free)

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

03.04.2013    16558    megabax    10    

MD5 Hash файла

Защита ПО и шифрование Универсальные функции Бесплатно (free)

Получение md5 хэша для файла

10.03.2011    50254    d0dger    24    

В помощь пользователям КЗК 2

Защита ПО и шифрование v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Задача: Защитить внеш. обработку или отчет с помощью КЗК 2 - передать клиенту с тем что бы он мог ее запустить, но без копирования файла precomp.dll в каталог ИБ. Так же может применяться и для блоков конфигурации.

28.01.2010    30346    script    42    

И ещё несколько слов о защите разработок...

Защита ПО и шифрование v8 1cv8.cf Россия Бесплатно (free)

Дневные мысли о механизмах защиты кода... (по мотивам http://www.infostart.ru/profile/8914/blogs/660/)

30.10.2008    41793    ValeriVP    81    

Ещё пара слов о защите разработок..

Защита ПО и шифрование Россия Бесплатно (free)

Ночные мысли о механизмах защиты кода..

22.10.2008    20523    Дуб    51    

Простые примеры реализации демо-версий обработок на платформе «1С:Предприятие 8».

Защита ПО и шифрование v8 1cv8.cf Россия Бесплатно (free)

Каждый из тех кто продает свой интеллектуальный труд, не раз сталкивался с необходимостью создания демо-версии разработки, дабы продемонстрировать клиенту функциональность, но при этом сохранить для клиента потребность в приобретении полнофункциональной версии. В этой статье я хотел бы рассмотреть несколько не сложных примеров создания демо-версий обработок/отчетов для платформы «1С:Предприятие 8».

06.05.2008    24802    coder1cv8    40    

Защита интеллектуальной собственности для 8 (простые примеры разработки)

Защита ПО и шифрование Россия Бесплатно (free)

Небольшой экскурс в технологии которые могут быть полезны. ( если ставите отрицательные оценки то потрудитесь объяснить за что). код примитивен? - это не минус, это только плюс,

28.02.2008    17584    Legavaz    39