Видео ролики бесплатно онлайн

Смотреть жесткое видео

Официальный сайт jhealth 24/7/365

Смотреть видео бесплатно

digiwhite 06.02.2010 18:11

Tips & tricksУстановка URL в качестве водяной марки на изображение

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

И так, использовать будем замечательный консольный инструмент для работы с изображениями под названием imagemagick. Чтобы установить его в debian подобных дистрибутивах, подозреваю, что нужно выполнить команду:
1
apt-get install imagemagick

с правами от root`а.

Далее под спойлером идет код скрипта:

  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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#!/bin/bash

###############################################################################
#
# Скрипт использует пакет imagemagick для создания водяной марки и вставки ее
# в изображения.
#
# Автор: digiwhite
# Дата создания: 02-06-2010
#
###############################################################################


###############################################################################
#
# Переменные скрипта.
#

# Обходить директории рекурсивно
RECURSIVE=0

# Количество указанных обязательных параметров
REQ_PARAMS=0

# URL для водяной марки
URL=

# Папка для поиска изображений
FOLDER=

# Директория, куда будут складываться все измененные изображения
OUTPUT_FOLDER=

# Директория для измененных изображений по умолчанию.
DEFAULT_OUTPUT_FOLDER=~/watermarks


###############################################################################
#
# Дополнительные настройки скрипта
#

# Шаблоны для поиска изображений с заданными расширениями
EXT="(*\.png$)|(*\.jpg$)"

# Место, где лежит сгенерированная водяная марка
WATERMARK_NAME="/tmp/watermark.gif"

# Место, где лежат шрифты, используемые для генерации водяной марки
FONT_FOLDER=/usr/share/fonts/truetype/freefont/

# Название шрифта
FONT_NAME=FreeSans.ttf

# Размер водяной марки - длинна
SIZE_X=200

# Размер водяной марки - ширина
SIZE_Y=30

###############################################################################

promt_help() {
SCRIPT_NAME=`basename $0`
echo "$SCRIPT_NAME <-r> <-u URL> <-f FOLDER> <-o FOLDER>"
echo
echo "-r Просматривать вложенные директории."
echo "-u URL, который используется для генерации водяной марки."
echo "-f Директория, в которой будут искаться файлы для вставки водяной марки."
echo "-o Директория, куда будет записан результат работы"
}



while getopts ru:f:o: OPT ; do
case $OPT in
r) let RECURSIVE=1
;;
u) URL=$OPTARG
let REQ_PARAMS=$REQ_PARAMS+1
;;
f) FOLDER=$OPTARG
let REQ_PARAMS=$REQ_PARAMS+1
;;
o) OUTPUT_FOLDER=$OPTARG
;;
*)
;;
esac
done

if < $REQ_PARAMS -eq 2 > ; then
if << ! -d $FOLDER >> ; then
echo " Директория \"$FOLDER\" не существует."
exit 3
fi

if < ! $URL > ; then
echo " Указан пустой URL."
exit 3
fi

CORRECT_URL=`echo $URL | egrep "^(http)|(https)|(ftp)://(www\.)?<0-9a-zA-Z.-_>+\\.<a-z>{2,5}"`
if < ! $CORRECT_URL > ; then
echo " Указанный URL не корректен."
exit 3
fi

if << ! "$OUTPUT_FOLDER" >> ; then
OUTPUT_FOLDER=$DEFAULT_OUTPUT_FOLDER
fi

if << ! -d "$OUTPUT_FOLDER" >> ; then
mkdir -p "$OUTPUT_FOLDER"

if << ! -d "$OUTPUT_FOLDER" >> ; then
echo " Не удалось создать директорию \"$OUTPUT_FOLDER\" для выходных файлов."
exit 3
fi
fi

OLDIFS=$IFS
IFS=`echo -en "\n\b"`
IFS=$'\n'

# Получаем список файлов для вставки водяной марки
if < $RECURSIVE -eq 1 > ; then
FILE_LIST=`find "$FOLDER" -type f -print | egrep $EXT`
else
FILE_LIST=`find "$FOLDER" -maxdepth 1 -type f | egrep $EXT`
fi

if << $FILE_LIST >> ; then
# Создаем водяную марку.
echo "<i> Создаем водяную марку $WATERMARK_NAME"
convert -background 'rgba(255, 255, 255, 0.0)' -fill black -gravity center -font $FONT_FOLDER/$FONT_NAME -size ${SIZE_X}x${SIZE_Y} -pointsize 24 label:"$CORRECT_URL" $WATERMARK_NAME


for file in $FILE_LIST ; do
FILE_NAME=`basename $file`
FILE_DIR_NAME=`dirname $file`

echo "</i><i> Маркировка файла $file => $OUTPUT_FOLDER/$FILE_DIR_NAME/`basename $file`"

if << ! -d "$OUTPUT_FOLDER/$FILE_DIR_NAME" >> ; then
mkdir -p "$OUTPUT_FOLDER/$FILE_DIR_NAME"

if << ! -d "$OUTPUT_FOLDER/$FILE_DIR_NAME" >> ; then
echo " Не удалось создать директорию \"$OUTPUT_FOLDER/$FILE_DIR_NAME\" для файла \"$FILE_NAME\""
exit 3
fi
fi

composite -gravity SouthEast $WATERMARK_NAME $file "$OUTPUT_FOLDER/$FILE_DIR_NAME/$FILE_NAME"
done

IFS=$OLDIFS
else
echo "</i><i> Не неайдено ни одного подходящего файла для вставки водяной марки."
exit 0
fi


else
echo " Указано недостаточно параметров."
echo
promt_help

exit 3
fi

</i></a-z>



А загрузить скрипт можно по этой ссылке.

Что делает скрипт. Он ищет файлы в указанной директории по расширениям указанным в переменной скрипта EXT, куда при желании вы сможете добавить шаблоны с другим расширениями (я использовал регулярные выражения) по примеру того, что там уже указано.

Затем, скрипт создает водяную марку в месте, указанном в переменной WATERMARK_NAME. При желании опять же можно изменить значение этой переменной. Генерация прозводится с помощью утилиты convert все из того-же пакета imagemagick. Параметры можете изменить ручкам и с помощью переменных (сделано конечно у меня тут не очень хорошо, но можно и доработать потом). Что значат конкретные параметры, можно посмотреть здесь.

После генерации водяной марки, мы проходим по всем найденным файлам и "приделываем" к ним ранее сгенерированную нами водяную марку с нашим URL и результат, с сохранением структуры папок записываем либо в ~/watermarks или туда, куда вы указали с помощью параметра -o.

Вот вам пример:
1
watermark.sh -u "http://welinux.ru" -f ./


и результат
technowallpapers28.th.jpg

PS:
Дополнительные ссылки по imagemagick:
http://www.imagemagick.org/Usage/annotating/
http://www.imagemagick.org/Usage/fonts/
http://www.imagemagick.org/Usage/text/


Тэги: bash imagemagick watermark
+ 1 -
Похожие Поделиться

exelens 06.02.2010 18:16 #
+ 0 -
Огромное!
А то я упарился уже... Опять воруют контент на одном из проектов.
Тексты рерайтят кое-как, а картинки используют мои =)
digiwhite 06.02.2010 18:17 #
+ 0 -
Поиграйся с настройкам цвета, размера и т.п. только :). То, что щас - не очень четко имхо :).
digiwhite 06.02.2010 18:18 #
+ 0 -
B шрифт любой другой :) Только полный путь к ним должен быть.
krig 06.02.2010 19:41 #
+ 0 -
Вотремарки тебя не спасут =)
Я нашел уже кучу репостов картинок со своего проекта с отрезаными вотермарками =)
exelens 06.02.2010 20:22 #
+ 2 -
Может тебе пригодится.
Обычно с похитителями контента я борюсь так:

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

Ищу рычаги:
Смотрю кто хостит и пишу письмо хостеру. Обычно хостеры помогают наказать засранцев.
Пишу письмо в Яндекс.
Пишу письмо в Гугль.

Кидаю из выдачи:
Копирую целиком wgetом сайт, который упёр мой контент.
Множу и размещаю его на бесплатных хостингах. 3 - 5 зеркал обычно хватает.
Добавляю в соц закладки и жду индексации Яндексом.
Продвигаю на 200 - 300 рублей сайты зеркала. Одну и туже страницу. В результате оно всё попадает в выдачу. Яндексу срывает башню. Он банит все сайты =) В том числе и тот, что спёр контент. Бывает правда не банит... а сайты зеркала получают ТИЦ как у оригинала (склеиваются сайты), ну тогда вешаем ссылки и рубим бабло.
digiwhite 06.02.2010 21:22 #
+ 0 -
Однако :)
Daria 06.02.2010 23:04 #
+ 0 -
хитрый план.
exelens 06.02.2010 23:18 #
+ 0 -
=))) ничего сложного =))

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн