Наложение водяного знака в PHP. Помогите с кодом

D3
На сайте с 12.11.2011
Offline
51
740

Задумал я тут сделать такую штуку:

Если на фото преобладает (т.е. более 50%) белый цвет, то накладывается Watermark1 (он будет черного цвета). Если на фото преобладают цветные пиксели (отличные от белого), то накладывается Watermark2 (он будет белого цвета). Как такое реализовать на PHP?

Водяной знак накладывается с помощью:

imagecopy($main_img, $watermark_img, 0, 0, 0, 0, $wmrk_size[0], $wmrk_size[1]);

Красивое женское нижнее белье. http://designer-lingerie.ru/ (http://designer-lingerie.ru/)
astraliens
На сайте с 25.09.2009
Offline
54
#1

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

ASTRALiENS - разработка сайтов (http://astraliens.net)
D3
На сайте с 12.11.2011
Offline
51
#2
astraliens:
и в цикле пройтись по изображению попиксельно.

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

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

ТС, ну выборочно проверять не вариант(если не лень, можете посчитать каков шанс промахнуться с этим методом)

Ну, а попиксельный перебор это будет жесть. 1024х768 картинка потребует 786432 итераций. Этот вариант думаю, отпадает сразу:)

ИМХО, вотемарк с тенью самый трушный вариант.

Подпись))
astraliens
На сайте с 25.09.2009
Offline
54
#4
dr303:
Попиксельно, боюсь, очень большая нагрузка на сервер будет. Возможно, есть вариант, взять к примеру 16 или чуть больше точек по всему периметру фото и по ним определять.

размер полигона это уже, разумеется, на Вашей совести. я только на направление намекнул.

насчет 1024x768 - ВМ накладывается на участок изображения (в большинстве случаев), потому область обхода будет меньше (равная размеру ВМ + процентов 5 вокруг, плюс если ВМ без альфаканалов и полостей, то достаточно обхода только вокруг заполняемой области), но конечноже не каждый пиксель в области проверять.

ТС, попробуйте вариант с тенями, если подойдет - то сэкономит вам и личное время и процессорное

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий