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

Скрытие водяных знаков

Необходимо удалить водяной знак более чем с 2500 изображений. Исходного изображения водяного знака нет, знаки разного типа.
Как можно закрыть водяной знак своим изображением? Можно ли написать какой-либо скрипт на PHP с использованием библиотеки GD? Есть ли готовые решения?

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

Массовое наложение водяных знаков.
Ищу программу, которая накладывает копирайт(водяной знак) на изображение, причём массово. Главная.

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

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

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
 // Исходное изображение $sourFile = 's.jpg'; // Маска-watermark $maskFile = 'm.png'; // Конечное изображение $saveFile = 'd.jpg'; // Открываем исходное изображение $sour = imageCreateFromJpeg($sourFile); // Открываем маску $mask = imageCreateFromPng($maskFile); // Получаем высоту и ширину изображения $imgSize = getImageSize($sourFile); $imgWidth = $imgSize[0]; $imgHeight = $imgSize[1]; // Создаем изображение, куда будет копировать конечно изображение $dest = imageCreateTrueColor($imgWidth, $imgHeight); // Бегаем по высоте for ($y = 0; $y  $imgHeight; $y++)  // Бегаем по ширине for ($x = 0; $x  $imgWidth; $x++) { // Получаем цвета пикселя с вотермарка $SourRgb = getPixColor($sour, $x, $y); // Получаем цвета пикселя с маски $MaskRgb = getPixColor($mask, $x, $y); // Обращаем цвет RBG в обратную строну $red = unBlend($SourRgb['r'], $MaskRgb['r'], $MaskRgb['a']); $green = unBlend($SourRgb['g'], $MaskRgb['g'], $MaskRgb['a']); $blue = unBlend($SourRgb['b'], $MaskRgb['b'], $MaskRgb['a']); // Соединяем цвета в формат RGB $pixelcolor = ( $red  <16 )  } // Сохраняем чистое изображение imagejpeg($dest, $saveFile); imagedestroy($dest); /** * Обращает цвет вотермарка в исходный цвет * @param integer $pDest Цвет вотермарка * @param integer $pMask Цвет маски * @param float $pAlpha уровень прозрачности. От 0(полностью прозрачно) до 1(полностью непрозрачно) * @return integer */ function unBlend( $pDest, $pMask, $pAlpha ){ $color = $pMask; // Если $pMask == 1, то обратить не получится if ( $pAlpha != 1 ){ // Обратная формула от формулы наложения вотермарка ( dest = ( sour + ( mask - sour ) * alpha ) $color = ( $pDest - $pAlpha * $pMask ) / ( 1 - $pAlpha ); // Не выходим ли мы запределы 0..255 $color = $color  0 ? 0 : round($color); $color = $color > 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 удаление водяного знака

Полный спектр компьютерных услуг!

X

Сообщение сайта

Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.

Ремонт компьютеров в калуге Рекламное место сдается

Decker

Просмотр профиля

Группа: Главные администраторы
Сообщений: 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:

// Исходное изображение
$sourFile = ‘s.jpg’;
// Маска-watermark
$maskFile = ‘m.png’;
// Конечное изображение
$saveFile = ‘d.jpg’;

// Открываем исходное изображение
$sour = imageCreateFromJpeg($sourFile);
// Открываем маску
$mask = imageCreateFromPng($maskFile);

// Получаем высоту и ширину изображения
$imgSize = getImageSize($sourFile);
$imgWidth = $imgSize[0];
$imgHeight = $imgSize[1];

// Создаем изображение, куда будет копировать конечно изображение
$dist = imageCreateTrueColor($imgWidth, $imgHeight);

// Бегаем по высоте
for ($y = 0; $y < $imgHeight; $y++) <
// Бегаем по ширине
for ($x = 0; $x < $imgWidth; $x++) // Получаем цвета пикселя с вотермарка
$SourRgb = getPixColor($sour, $x, $y);
// Получаем цвета пикселя с маски
$MaskRgb = getPixColor($mask, $x, $y);
// Обращаем цвет RBG в обратную строну
$red = unBlend($SourRgb[‘r’], $MaskRgb[‘r’], $MaskRgb[‘a’]);
$green = unBlend($SourRgb[‘g’], $MaskRgb[‘g’], $MaskRgb[‘a’]);
$blue = unBlend($SourRgb[‘b’], $MaskRgb[‘b’], $MaskRgb[‘a’]);
// Соединяем цвета в формат RGB
$pixelcolor = ( $red imagesetpixel($dist, $x, $y, $pixelcolor);
>
>

// Сохраняем чистое изображение
imagejpeg($dist, $saveFile);
imagedestroy($dist);

/**
* Обращает цвет вотермарка в исходный цвет
* @param integer $pDist Цвет вотермарка
* @param integer $pMask Цвет маски
* @param float $pAlpha уровень прозрачности. От 0(полностью прозрачно) до 1(полностью непрозрачно)
* @return integer
*/
function unBlend( $pDist, $pMask, $pAlpha ) $color = $pMask;
// Если $pMask == 1, то обратить не получится
if ( $pAlpha != 1 ) // Обратная формула от формулы наложения вотермарка ( dist = ( sour + ( mask — sour ) * alpha )
$color = ( $pDist — $pAlpha * $pMask ) / ( 1 — $pAlpha );
// Не выходим ли мы запределы 0..255
$color = $color < 0 ? 0 : round($color);
$color = $color > 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 );
>

Источник

Читайте также:  What is main method in java program
Оцените статью