Пропускане към основното съдържание

Пакетна обработка на снимки с ImageMagick

За публикуване в Мрежата обикновено не се налага снимките да са с изключително качество и максимален размер. От друга страна е добре да ги защитим с воден знак, тъй като не са единични случаите на „заимстване“ без разрешение.
  1. Подготвяме в Gimp изображение с прозрачен фон, което ще бъде използвано за воден знак. Моят е с параметри:
Image Type: png (The PNG image format)
Width: 640 pixels
Height: 400 pixels
  1. Инсталираме пакета ImageMagick
  2. Използваме командата composite:
composite -dissolve 50% -gravity center -quality 100 \( watermark.png -resize 150% \) \( photo.jpg -resize 50% \) new-image.jpg
където:
-dissolve 50%:   прозрачност на водния знак;
-gravity center: основното изображение и водния знак ще бъдат подравнени централно
-quality 100: качество на компресията на съставното изображение
watermark.png -resize 150%: изображение на водния знак и мащаб
photo.jpg -resize 50%: оригинално изображение и мащаб
new-image.jpg: композитно изображение
  1. Създаваме директория ~/bin, в която ще бъде скрипта, който ще обработва изображенията.
  2. В любимия ни текстови редактор въвеждаме следния скрипт:
#!/bin/bash

###########################################
# NAME:       watermark
# AUTHOR:    © angie_bg (angiebg.blogspot.com), 2014
# LICENSE:    Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/
#       You are free to use and/or modify this script. If you choose to distribute this script, with or
#       without changes, you must attribute credit to the author listed above.
# REQUIRES:    ImageMagick, coreutils
# VERSION:    1.0
# DESCRIPTION:    A script to add a watermark to all images in a directory.
#       Original images will be retained and new watermarked images will be created.
#
###########################################

# инициализиране на променливите
# път към изображението - воден знак
wm=$HOME/bin/Watermark.png
# мащаб на изображението - воден знак
scale=150
# максимални размери на новото изображение
portrait=800
landscape=1200
# проверка дали директорията, в която ще се съдържат обработените снимки, съществува
if [ ! -d watermarked ]
   then
      mkdir watermarked
   fi
# обработка на всички снимки в текущата директория
file -i * | grep image | awk -F':' '{ print $1 }' | while read image
   do
      echo Обработвам $image …
# определяне на мащаба на композитното изображение
      height=$(identify $image | cut -d\  -f3 | cut -dx -f1)
      width=$(identify $image | cut -d\  -f3 | cut -dx -f2)
      if (( $height > $width ))
          then
              sizescale="$(echo $portrait / $width \* 100| bc -l | cut -d. -f1)"
          else
              sizescale="$(echo $landscape / $width \* 100| bc -l | cut -d. -f1)"
      fi
      name=`echo $image | cut -f1 -d.`
      ext=`echo $image | cut -f2 -d.`
      composite -dissolve 40% -gravity center -quality 80 \( $wm -resize $scale% \) \( $image -resize $sizescale% \) "${name}_wm.${ext}"
      mv "${name}_wm.${ext}" watermarked/"${name}.${ext}"
   done
exit 0
  1. Правим скрипта изпълним:
$ chmod +x watermark
Сега е достатъчно да извикаме скрипта от произволна директория, в която се намират нашите снимки. Всички обработени изображения се намират в директория watermarked, поддиректория на текущата.
Можем да направим връзка към скрипта и да я поставим в .gnome2/nautilus-scripts, подпапка на домашната ни директория. Сега, след чукване с десен клавиш от Nautilus в папката, в която се намират снимките ни, на трета позиция се появява scripts > watermark. Това ни позволява да ползваме скрипта в графична среда, а не конзолно.
Скриптът няма индикатор за изпълнението и е доста неприятно да се следи колко са обработените във watermarked снимки. Затова можем да добавим още един ред като предпоследен (преди exit 0):
play -v0.3 $HOME/bin/8_Jason_Derulo_Trumpets.wav
Сега след завършване на обработката се изпълнява звуков сигнал, в моят случай това е8_Jason_Derulo_Trumpets.wav, който е в същата директория, където е и скрипта. Параметърът -v0.3 определя силата на звука (30%), като това трябва да се определи индивидуално. За да може да се изпълни командата play, трябва да бъде инсталиран пакетът sox. 

Източници:




Коментари

Популярни публикации от този блог

Проектиране на кемпер с VehiPlan

Оливер Колонж (Oliver Collonge) написва през 2011 г. втора версия на безплатната програма за дизайн на кемпери VehiPlan . Според автора тя е писана и трябва да работи под Windows 2000/Vista. Пробите показват, че работи нормално и под Windows 7 и 10. След като свалите архива (zip) можете да го разархивирате в C:\Windows\Program Files (x86)\. Програмата е с френски интерфейс и затова са необходими още няколко файла - vb6fr.dll , comdlg32.ocx & mscomctl.ocx . Тези файлове се поставят в C:\Windows\SysWOW64\. Comdlg.ocx се поставя в C:\Windows\System32\. След това е необходимо да се стартира Command Prompt (cmd - като администратор) и да се изпълни командата: regsvr32 %systemroot%\system32\comdlg32.ocx Ако възникне някакъв проблем, по-нова версия на файла може да се свали от тук . След това трябва да направим препратка към C:\Program Files (x86)\VehiPlan-2-0-0\VehiPlan.exe за по-удобно стартиране, която да поставим на работния плот или друго подходящо място. В архивния файл на програмат

Диаграма на Гант с електронна таблица

Диаграмата на Гант се състои от ленти, ориентирани успоредно на времевата ос. Всяка лента представлява отделна задача в проекта (вид работа), краищата ѝ — началния и крайния момент на изпълнението  ѝ, а дължината ѝ - продължителността на задачата. Тези диаграми могат да се използват и за други, не точно производствени, цели - например да покажат заетостта на учебна зала. Когато представянето на данните е регулярна задача може да се използва специализиран софтуер като GanttProject, но за инцидентна визуализация можем да се справим с „подръчни средства“. Сега ще покажем как с електронна таблица (LibreOffice Calc) ще визуализираме времето, за което няколко служители са работили във фирмата: Изходните данни са в няколко колони: Продължителността на трудовия стаж в дни определяме с формулата D2=C2-B2, като я копираме за всеки последващ ред. На 6-и ред съответно с функцията MIN и MAX определяме минимална и максимална дата в таблицата, а на 7-и ред - записваме начална (1.1.1989) и

MD5 и SHA-1 хеш алгоритми

MD5 (от „message-digest“) криптографският алгоритъм е създаден през 1991 г. от проф. Роналд Райвест и за първи път е публикуван през април 1992 г. Целта му е да замени компрометирания MD4 алгоритъм, който не е достатъчно сигурен. В последствие се оказва, че и MD5 не отговаря на съвременните изисквания за сигурност и може да бъде разбит. MD5 е построен върху конструкцията на Merkle–Damgård и генерира шестнайстично число със фиксиран размер от 32 символа (128 бита) за входящо съобщение с произволна дължина. Идеята е да се създаде уникален идентификатор за съобщението, който да гарантира неговата истинност. Например: MD5("The quick brown fox jumps over the lazy dog") = 9e107d9d372bb6826bd81d3542a419d6 Дори малка промяна, напр. добавя не точка в края на входящото съобщение би трябвало да генерира нов уникален идентификатор: MD5("The quick brown fox jumps over the lazy dog . ") = e4d909c290d0fb1ca068ffaddf22cbd0 Дължината на вход