Php наложение водяного знака

Php наложение водяного знака

В продолжение темы загрузки изображений на сервер хотелось бы рассказать о такой достаточно частой задаче, как нанесение на картинку водяного знака.

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

За основу возьмём код, написанный в вышеуказанных статьях, и добавим в него необходимые элементы.

Стандартные функции

Для начала небольшая справка по тем стандартным функциям PHP, которые нам с вами придётся использовать:

  1. getimagesize – возвращает полезные данные об изображении. Нас будут интересовать ширина, высота и MIME-тип картинки.
  2. imagecreatefrom*** — одна из функций imagecreatefromjpeg, imagecreatefrompng и т.д. Вместо звёздочек мы будет подставлять MIME-тип загружаемого изображения. Результатом работы функции является представление картинки в памяти PHP.
  3. image*** — одна из функций imagejpeg, imagepng и т.д. Результатом работы функции является сохранённое изображение.
  4. imagecopy – функция для копирования изображения. Её мы будем использовать непосредственно для наложения одной картинки на другую.

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

Наложение знака при загрузке — функция

Итак, вот во что превратится наша функция make_upload:

Первый момент, который может вызвать определённое непонимание, – это непривычная запись $im_cr_func($file[‘tmp_name’]). Что же это такое? На самом деле вместо $im_cr_func будет подставлено название функции, которую мы выбрали. Например, при загрузки jpg-картинки будет вызвана функция imagecreatefromjpeg.

После выполнения данного действия в переменной $img у нас хранится представление картинки в памяти PHP. Аналогичным образом заносим в переменную $watermark изображение водяного знака. Обратите внимание, что эта картинка лежит у нас в корне сайта.

Читайте также:  Huawei 320s прошивка под всех операторов

Следующий важный шаг – расчёт правильных координат для наложения изображений. Тут схема классическая: половина разности ширин – это отступ слева, половина разности высот – отступ сверху. После этого с помощью функции imagecopy мы совмещаем оба изображения.

Ну, фактически всё! Теперь просто вызываем $im_save_func, куда передаём ссылку на совмещённое изображение и путь, по которому картинку нужно сохранить.

Вот такая система!

В итоге мы научились накладывать водяной знак на загружаемое изображение, а вскоре разберём изменение размера загружаемого изображения. Не пропустите!

Если вы хотите добавить водяной знак на фото, не заморачиваясь с графическими редакторами или добавлять его во время загрузки фоток на сервер, то это урок для вас.

В этом уроке я покажу вам как добавить водяной знак на изображение на лету, фактически не изменяя исходное изображение. В первую очередь, вам понадобится изображение, которое вы будете использовать в качестве водяного знака.

Затем формируем заголовок файла:

Затем мы формируем png изображение и получаем его размеры:

То же самое сделаем и с оригинальным изображением, но только в формате jpg. Это обычное дело для фоток, которые загружаются через форму. Действуем следующим образом:

Теперь нам надо поместить водяной знак на изображение:

Затем настроим опции смешивания для обоих изображений:

В конце концов мы создаём новое изображение используя параметры:

Важно убрать за собой:

Для регулирования прозрачности водяного знака можно использовать Photoshop.

С теорией всё. Теперь применим наши знания в реальном проекте. Всё это необходимо сохранить в файл. К примеру под названием watermark.php

Теперь для того, чтобы показать фотку на которой будет водяной знак не изменяя исходное изображение, используйте следующий код:

Читайте также:  Finereader уменьшить размер pdf

Таким образом, мы передаём только имя изображения и получаем то что нам нужно, не изменяя исходное изображение.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.codeforest.net/add-watermark-on-image-using-php
Перевел: Станислав Протасевич
Урок создан: 26 Февраля 2011
Просмотров: 52237
Правила перепечатки

5 последних уроков рубрики "PHP"

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

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

Читайте также:  Openmediavault active directory настройка

Рассмотрим пример кода, который демонстрирует наложение водного знака, на загружаемые картинки.

Итак, основные настройки содержаться в виде констант, и идут в коде первыми:

На странице мы разместим форму загрузки изображения, с помощью которой изображения будут отправляться на сервер.
Код формы:

Ну а теперь самое основное, это функции для обработки изображения. Разместить эти функции следует перед показом формы на странице.

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

А вот и архив с исходником примера. На этом пока всё, успехов!

Ссылка на основную публикацию
Adblock detector