5 / 5 / 1
Регистрация: 24.09.2011
Сообщений: 53
1

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

07.05.2012, 20:41. Показов 23060. Ответов 9
Метки нет (Все метки)

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

Примеры картинок:
Миниатюры
Скрытие водяных знаков   Скрытие водяных знаков  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2012, 20:41
Ответы с готовыми решениями:

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

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

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

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

9
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
09.05.2012, 15:33 2
Необходимо удалить водяной знак более чем с 2500 изображений. Исходного изображения водяного знака нет, знаки разного типа...
Это сделать нельзя, т.к. это незаконно. Водяной знак наложен как раз для того, чтобы не воровали картинки.
0
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
09.05.2012, 16:50 3
лови
PHP
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
<?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];
 
// Создаем изображение, куда будет копировать конечно изображение
$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 ) | ( $green << 8 ) | $blue ;
        imagesetpixel($dest, $x, $y, $pixelcolor);
    }
}
 
// Сохраняем чистое изображение
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 );
}
 
?>
0
5 / 5 / 1
Регистрация: 24.09.2011
Сообщений: 53
09.05.2012, 18:14  [ТС] 4
Скопировать с хабра и я могу. Предложенный вариант будет работать в том случае если имеется исходный файл этого watermark'а, в моем случае его нет. Также этот код работает только с полупрозрачными водяными знаками, в моем случае они не прозрачные.
0
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
09.05.2012, 21:23 5
нет, выделяешь свой вотермарк в фотошопе, обесцвечиваешь, применяешь фильтр контраст (для макс рельефа контура) и всё работает
0
5 / 5 / 1
Регистрация: 24.09.2011
Сообщений: 53
10.05.2012, 20:37  [ТС] 6
Цитата Сообщение от borovik Посмотреть сообщение
нет, выделяешь свой вотермарк в фотошопе, обесцвечиваешь, применяешь фильтр контраст (для макс рельефа контура) и всё работает
Пользоваться фотошопом я умею, но...
Необходимо удалить водяной знак более чем с 2500 изображений
...не особо хочется заниматься этим вручную...
0
isseau
07.03.2013, 12:17 7
Добрый день! Друзья, посоветуйте, как можно убрать водяные знаки из изображения.
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28045 / 15778 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
07.03.2013, 19:28 8
Цитата Сообщение от isseau Посмотреть сообщение
как можно убрать водяные знаки из изображения
прочитать данную тему. если не понятно - читать еще и еще, до понимания.
0
0 / 0 / 0
Регистрация: 13.03.2018
Сообщений: 1
13.03.2018, 19:36 9
Доброго времени!
подскажите как воспользоватся скриптом?
Как подключить?
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28045 / 15778 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
13.03.2018, 19:40 10
Desserro,
вы думаете мой ответ и ответborovik, перестал работать?
0
13.03.2018, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2018, 19:40
Помогаю со студенческими работами здесь

Добавление водяных знаков налету
Вроде для nginx .htaccess не отрабатывает правила типа RewriteRule...

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru