Elettracompany.com

Компьютерный справочник
6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Удаление водяного знака php

Удаление водяного знака php

Администратор

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Есть различные способы, как убрать watermark с картинки:

1) Методом photoshop — для кропотливых людей и знающих как это сделать в редакторе

2) Методом сторонних программ — приложение просто замажет его, в целом останутся «рубцы»

3) Метод DYI on <язык программирования>— т.е. мы сами пишем велосипед, что бы почистить изображение

Под катом, как это сделать и пример кода

По работе столкнулся с задачей по стиранию watermark с изображений. Изображений много, около 1000.

Значит нужно средство по автоматизации данной процедуры. Немного поразмыслив, пришёл к выводу что:

1) При наложении watermark, происходят математические преобразования цвета

2) Если у watermark есть прозрачность, то можно обратить цвет в исходный

Как это сделать?

Нужно иметь исходную маску watermark.

А что делать, если нет маски?

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

2) С помощью нескольких изображений, программными методами, создать маску ( тема другой статьи )

В данном случаем мы разбираем только обратное преобразование ( формулы, работы с прозрачностью PNG и т.п. )

1) Если в маске есть не прозрачный пиксель, он перейдёт на конечное изображение

2) Ширина и высота маски и исходного изображения для упращения одинаковы

Теория и формулы:

1) Цвет пикселя при наложении watermark рассчитывается следующим образом ( упрощённый вариант )

dist = ( sour + ( mask — sour ) * alpha, где

dist — конечный цвет пикселя ( от 0 до 255 )

sour – исходный цвет пикселя до наложения watermark

mask – цвет пикселя watermark

alpha – уровень прозрачности. От 0(полностью прозрачно) до 1(полностью непрозрачно)

2) Формула обратного преобразования цвета

sour = ( dist — alpha * mask ) / ( 1 — alpha )

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

3) При считывании маски с формата PNG, имеем иную логику

Если прозрачность пикселя в маске равна 127, то пиксель считается полностью прозрачным

Если прозрачность пикселя в маске равна 0, то пиксель считается полностью не прозрачным

Формула преобразования прозрачности:

abs( ( (RGB >> 24) & 0xFF ) / 127 — 1)

Итого внизу исходный код на PHP:

255 ? 255 : $color;
>
return $color;
>

/**
* Получаем цвет пикселя с прозрачностью.
* Возвращает в формате array(‘r’=>int, ‘g’=>int, ‘b’=>int, ‘a’=>float);
* @param gdImage $pImage Handle на изображение
* @param integer $pX позиция по X
* @param integer $pY позиция по Y
* @return array
*/
function getPixColor($pImage, $pX, $pY) <
// Получаем цвет изображения
$rgb = imagecolorat($pImage, $pX, $pY);
// Преобразуем
$red = ($rgb >> 16) & 0xFF;
$green = ($rgb >> 8) & 0xFF;
$blue = $rgb & 0xFF;
// Преобразуем alpha, так как в PNG 127 это полная прозрачность, а 0 — не прозрачность
$alpha = abs(( ($rgb >> 24) & 0xFF ) / 127 — 1);
return array(‘r’=>$red, ‘g’=>$green, ‘b’ => $blue, ‘a’ => $alpha );
>

Удаление водяного знака php

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

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

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

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

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Читать еще:  Почему принтер печатает ошибку

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Убираем водяные знаки с фото онлайн

Для того чтобы разместить в группе социальных сетей или на своем сайте картинку, необходимо найти её в интернете или создать свою. Чаще все же пользователи выбирают первый вариант, так как, для того чтобы создать нужное изображение самостоятельно, необходимо уметь хорошо рисовать. Но владельцы сайтов «помечают» такие картинки специальными миниатюрами — водяными знаками. Если вы используете такое изображение, всем сразу станет ясно, что вы взяли его из другого источника. В этой статье вы сможете прочитать, каким образом убрать водяной знак, чтобы его не было видно на фото.

Подробнее о водяном знаке на фото

Для тех, кто мало знаком с водяными символами в интернете, нужно рассказать подробнее, что это такое. Например, вы являетесь фотографом. Это не только ваше хобби, но и способ заработка. Люди этой профессии выкладывают свои изображения на специальных сервисах — фотобанках, в надежде найти покупателя. Для того чтобы защитить изображения, фотобанки используют еще один слой для размещенных изображений. В этом случае полупрозрачный знак представлен в виде полос с названием этого сервиса. Они пересекают всё изображение, которое вы загрузили. Поэтому обычному пользователю будет очень сложно избавиться от этой защиты.

Фотобанки популярны в сети, здесь покупают оригинальные изображения создатели рекламных роликов и баннеров, блогеры, музыканты и представители других профессий. Водяные знаки созданы для защиты от воровства авторских работ. Часто используются доменные имена для его нанесения. Если даже картинку разместят на другом ресурсе, она приведёт пользователей на сайт владельца изображения.

Нужно ли удалять графическую защиту

Прежде чем приступать к удалению водяного знака нужно знать, что этот процесс занимает некоторое время . Поэтому взвесьте свою ситуацию, стоит ли на это тратить время или может быть можно найти альтернативу . Для поиска фотографий есть масса источников. Одним из самых распространенных является поисковая система Google. Чтобы найти здесь нужное фото — введите поисковый запрос и нажмите соответствующую кнопку для начала поиска. Когда откроется окно результатов, вам нужно выбрать вкладку «Картинки» .

Вы можете найти изображения без защитных логотипов на сайте https://www.flickr.com. Перейдите на главную и введите нужный поисковый запрос в окне вверху. Несмотря на то, что сайт практически не ориентирован на русскоязычного пользователя, поиск «понимает» запросы на русском.

Поиск картинок на flickr.com

На https://commons.wikimedia.org вы сможете нейти несколько десятков миллионов изображений, которые не защищены лицензиями и не содержат водяных знаков . Для поиска можно также воспользоваться поисковой строкой.

Избавляемся от логотипа в Adobe Photoshop

Графический редактор Adobe Photoshop известен во всем мире своим обширным набором инструментов, которые помогают творить чудеса. Есть несколько удивительных инструментов и для нашего случая. Можно использовать один из инструментов «Фотошопа» — «Штамп» .

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

  1. Запустить редактор, выбрать этот инструмент на панели.
  2. Зажать клавишу ALT.
  3. Чтобы скопировать участок, нажмите левую кнопку мыши.
  4. Теперь той же левой кнопкой закрасьте или вставьте участок. Таким образом водяной знак исчезнет из вашего фото.

Есть еще 2 инструмента в Photoshop , которые помогут нам убрать водяной знак с фотоснимка:

Обрезание фотографии

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

  1. Нажмите в панели инструментов «выделение».
  2. Обведите изображение, которое будет сохранено, но без водяного знака.
  3. Нажмите кнопку «Обрезать».

Готово. Теперь у вас есть оригинальное фото без каких-либо примечательных знаков.

Читать еще:  Не подключается интернет ошибка 651

Еще проще удалить водяной знак с изображения, на котором он расположен на однотонном слое. Для этого можно использовать любой графический редактор, так как нам понадобятся для этого стандартные инструменты. Часть изображения, на котором находится водяной знак нужно выбрать любым видом выделения — прямоугольная область, эллипс. Затем выберите инструмент «Пипетка» и скопируйте цвет фона, на котором расположен водяной знак. Осталось выбрать инструмент «Заливка» и закрасить выделенную область и саму вотермарку.

Специальные программы, убирающие водяной знак

Одной из программ, которая помогает убрать водяные знаки на фото и картинках является Inpaint. Основным методом очистки выступает заполнение области соответствующим цветом или их группой. Она даёт возможность удалять логотипы, редактировать кадры , в которые попали лишние объекты, артефакты и царапины. Inpaint обладает еще несколькими возможностями — удаление дефектов на коже, дат съемки камер, различных загораживающих объектов, редактирование нескольких кадров.

Также здесь собраны все популярные инструменты, которые помогают справиться с подобными задачами. Найти её можно по ссылке http://www.softportal.com/software-28737-inpaint.html. Одним из популярных инструментов этого редактора является масштабируемая кисть-маркер.

Чтобы ею воспользоваться:

    Выберите на панели пиктограмму в виде волшебной палочки.

Работа в программе Inpaint

  • Так как часто приходится работать с участками, на которых пиксели разного цвета и оттенка, закрасьте область вокруг и сам объект, чтобы программа смогла определить, какими именно пикселями заполнять эту область, можно указать пример и из другого участка.
  • Завершите обработку нажатием ENTER.

    Результат обработки фото в Inpaint

    После этого запустится алгоритм удаления водяного знака. Не всегда программе Inpaint удается успешно завершить работу. В этом случае вы можете снова попытаться удалить оставшиеся участки ватермарки. Есть в этой программе еще один инструмент — «Восстановление» из нескольких изображений . С его помощью пользователи смогут устранить водяной знак в сложной ситуации, когда он наложен на несколько неоднотонных объектов сразу. Единственной сложностью является то, что нужно дополнительное изображение, которые было снято приблизительно с одного ракурса.

    Добавление водяного знака на фото средствами PHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

    Нанесение водяных знаков на изображение средствами PHP

    Дата публикации: 2013-11-15

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

    Постановка задачи

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

    Читать еще:  Не запускается spintires mudrunner ошибка 0xc000007b

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

    Бесплатный курс по PHP программированию

    Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

    В курсе 39 уроков | 15 часов видео | исходники для каждого урока

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

    Это изображение формата PNG с 50% степенью прозрачности.

    Подготовка к написанию скрипта

    Первым делом необходимо убедиться, что в Вашем интерпретаторе языка PHP подключена библиотека GD. Данная библиотека используется для работы с изображениями средствами языка PHP. Поэтому если Вы не уверены, что данная библиотека подключена, откройте конфигурационный файл языка PHP и найдите строку: extension=php_gd2.dll

    Напротив данной строки не должно быть символа “;”(точка с запятой). Если он есть, то удалите его и перезапустите веб-сервер Apache. Далее, для сегодняшнего урока я подготовил тестовую страницу, которая отображает на экране исходное изображение:

    Но если мы хотим динамически наносить на изображение водяной знак и при этом не изменять исходное изображение, значит, изображение должно обрабатываться скриптом на языке PHP. Поэтому в теге img необходимо изменить значение атрибута src. То есть значение данного атрибута должно указывать не на изображение, а на файл, который обработает исходное изображение и нанесет на него водяной знак. И конечно же вернет новое изображение. Поэтому перепишем тег img:

    Как Вы видите, теперь мы обращаемся к файлу image.php, который вернет нам новое изображение, и передаем ему через GET параметры путь к исходному изображению. Перед тем как приступить к созданию файла image.php, который должен вернуть нам новое изображение, давайте создадим файл конфигурации config.php, с вот таким содержимым:

    Данный фал нам необходим для хранения некоторых настроек, а именно:

    DIR_IMG – папка где содержатся все изображения;

    WM – путь к изображения, которое используется как водяной знак.

    Затем создадим еще один файл – functions.php, который будет содержать в себе необходимые функции для работы скрипта. Теперь создадим файл image.php и первым делом подключим только что созданные файлы к нему.

    Далее проверим наличие ячейки image в суперглобальном массиве $_GET, если данная ячейка есть, то создадим переменную и сохраним в нее значение данной ячейки:

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

    Теперь переходим непосредственно к написанию функции get_water(), которая обработает исходное изображение и нанесет на него водяной знак.

    Функция наложения водяного знака

    Итак, переходим в файл functions.php и начнем создавать функцию get_water():

    Смотрите, функция принимает всего два параметра (из которых один не обязательный):

    $main_img_path – путь к исходному изображению, которое требуется обработать;

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

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

    То есть в ячейках 0 и 1 содержится ширина и высота данного изображения. В ячейке 2 одна из констант типа изображения (в нашем случае значение 2 соответствует типу jpeg). Индекс 3 содержит строку со значениями ширины и высоты изображения width=»xxx» height=»yyy», которая может быть использована внутри img тэга. Ячейка mime – содержит в себе соответствующий MIME-тип изображения.

    Далее весь код будем вести внутри функции get_water(). Теперь необходимо проверить, не вернула ли функция getimagesize() – FALSE. Если да, то выходим из скрипта:

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