SlideShare a Scribd company logo
1 of 14
Download to read offline
Пакетная апрацоўка
графічных файлаў:
ImageMagick
Антон Літвіненка,
Кіеў, Украіна
Інтэрактыўныя сродкі апрацоўкі
выяваў (Gimp, Krita, ...)
● Традыцыйна (настолькі, што падаецца
адзіна магчымым варыянтам)
● Поўны візуальны кантроль над
працэсам
● Неабходнасць апрацоўваць кожную
выяву асобна
Пакетная апрацоўка
● Навошта патрэбна апрацоўваць графічныя
дадзеныя ў тэкставым рэжыме?
● Як уявіць сабе рэдагаванне графікі
„ўсляпую“?
● Задача-прыклад: зняць 20 (100, 1000, ...)
фатаздымкаў з фотаапарата, сціснуць іх да
памеру 800x600, дадаць тонкую рамачку і
подпіс аўтара.
Інструменты аўтаматызацыі
● Gimp мае пакетны рэжым выканання;
● Але стварэнне скрыптоў патрабуе
праграміравання сцэнараў Gimp (Scheme,
Python); Функцыі, аналагічнай „запісаць макрас“
з Photoshop у Gimp бракуе.
● Альтэрнатыва: ImageMagick. Адмыслова
створаны для пакетнае апрацоўкі графікі. Існуе
як асобная праграма (пакет праграм) і бібліятэка
(для выкарыстання ў Web-скрыптах).
● Пры выкарыстанні ў выглядзе асобнае праграмы
патрабуе толькі bash.
Спрошчаны прыклад
● Няхай усе файлы маюць памер 1600x1200,
і патрэбна сціснуць іх да 800x600
#!/bin/bash
for i in DSCF????.JPG
do
convert $i -resize 800x600 `basename $i .jpg`_res.jpg
done
● convert – асноўная ўтыліта ImageMagick
Дадаем гібкасці
● А што, калі памер выявы не 1600x1200? Калі
бакі суадносяцца не як 3:2?
● Будзем лічыць, што арыентацыя выявы –
альбомная.
#!/bin/bash
for i in DSCF????.JPG
do
convert $i -resize 800x `basename $i .jpg`_res.jpg
done
● Частку інфармацыі пра параметры IM
атрымлівае з выявы
Адаптыўныя метады
– -adaptive-blur, -selective-blur
– -adaptive-sharpen
– lat (Local Adaptive Threshold)
– …
● Па-рознаму застасоўваць аперацыю да розных
фрагментаў выявы залежна ад іх марфалогіі
● Адаптыўнае размыццё стараецца на кранаць
фрагменты з рэзкімі перападамі колеру ці яркасці,
адаптыўнае павялічэнне рэзкасці – наадварот,
менавіта з імі і працуе.
● Адаптыўны парог мяняе значэнне залежна ад
значэнняў па суседстве.
Прыклад: -selective-blur
Зыходная -selective-blur 10x3+10%
Прыклад: -selective-blur
-selective-blur 10x3+10% -blur 10x3
Fx-выразы
● Папіксельнае пераўтварэнне выявы з
выкарыстаннем алгебраічных выразаў і
простых скрыптоў.
convert rose.jpg -fx 
"(1.0/(1.0+exp(10.0*(0.5-u)))-0.007)*1.009" 
rose-sigmoidal.png
http://www.imagemagick.org/script/fx.php
Яўнае атрыманне параметраў
выявы
● Опцыя -format і пункт прызначэння info:
(магчыма, таксама з fx-выразамі для
вылічэння вытворных велічыняў)
$ convert rose.jpg -format ''%w'' info:
70
$ convert rose.jpg -format ''%[fx:w/2]'' info:
35
● Можна атрымаць параметры выявы ў
зменных bash і рабіць з імі што заўгодна
Зноў да фатаграфій
● Цяпер незалежна ад арыентацыі выявы
большы бок будзе 800 пікселяў.
#!/bin/bash
for i in DSCF????.JPG
do
w=`convert $i -format ''%w'' info:`
h=`convert $i -format ''%h'' info:`
if [ $w -ge $h ]
then
convert $i -resize 800x `basename $i .jpg`_res.jpg
else
convert $i -resize x800 `basename $i .jpg`_res.jpg
fi
done
Дадаванне подпісу
● Ствараем паўпразрыстую выяву з подпісам
(тэкст подпісу ў празрыстым слое)
● Складаем фотаздымак і выяву з подпісам
● Галоўнае – правільна вызначыць
каардынаты подпісу.
-gravity -geometry
(разам з format і fx)
Прыклад!

More Related Content

More from Minsk Linux User Group

Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...Minsk Linux User Group
 
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасцьСвятлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасцьMinsk Linux User Group
 
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использованияТимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использованияMinsk Linux User Group
 
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSDАндрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSDMinsk Linux User Group
 
Vitaly ̈_Vi ̈ Shukela - My FOSS projects
Vitaly  ̈_Vi ̈ Shukela - My FOSS projectsVitaly  ̈_Vi ̈ Shukela - My FOSS projects
Vitaly ̈_Vi ̈ Shukela - My FOSS projectsMinsk Linux User Group
 
Alexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизниAlexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизниMinsk Linux User Group
 
Vikentsi Lapa — How does software testing become software development?
Vikentsi Lapa — How does software testing  become software development?Vikentsi Lapa — How does software testing  become software development?
Vikentsi Lapa — How does software testing become software development?Minsk Linux User Group
 
Михаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? ПродолжениеМихаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? ПродолжениеMinsk Linux User Group
 
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPNМаксим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPNMinsk Linux User Group
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...Minsk Linux User Group
 
MajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного ДомаMajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного ДомаMinsk Linux User Group
 
Максим Салов - Отладочный монитор
Максим Салов - Отладочный мониторМаксим Салов - Отладочный монитор
Максим Салов - Отладочный мониторMinsk Linux User Group
 
Максим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overviewМаксим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overviewMinsk Linux User Group
 
Константин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о JenkinsКонстантин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о JenkinsMinsk Linux User Group
 
Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»Minsk Linux User Group
 
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...Minsk Linux User Group
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Minsk Linux User Group
 
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...Minsk Linux User Group
 

More from Minsk Linux User Group (20)

Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
Андрэй Захарэвіч — Hack the Hackpad: Першая спроба публічнага кіравання задач...
 
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасцьСвятлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
Святлана Ермаковіч — Вікі-дапаможнік. Як узмацніць беларускую вікі-супольнасць
 
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использованияТимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
Тимофей Титовец — Elastic+Logstash+Kibana: Архитектура и опыт использования
 
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSDАндрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
Андрэй Захарэвіч - Як мы ставілі KDE пад FreeBSD
 
Vitaly ̈_Vi ̈ Shukela - My FOSS projects
Vitaly  ̈_Vi ̈ Shukela - My FOSS projectsVitaly  ̈_Vi ̈ Shukela - My FOSS projects
Vitaly ̈_Vi ̈ Shukela - My FOSS projects
 
Vitaly ̈_Vi ̈ Shukela - Dive
Vitaly  ̈_Vi ̈ Shukela - DiveVitaly  ̈_Vi ̈ Shukela - Dive
Vitaly ̈_Vi ̈ Shukela - Dive
 
Alexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизниAlexander Lomov - Cloud Foundry и BOSH: истории из жизни
Alexander Lomov - Cloud Foundry и BOSH: истории из жизни
 
Vikentsi Lapa — How does software testing become software development?
Vikentsi Lapa — How does software testing  become software development?Vikentsi Lapa — How does software testing  become software development?
Vikentsi Lapa — How does software testing become software development?
 
Михаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? ПродолжениеМихаил Волчек — Свободные лицензии. быть или не быть? Продолжение
Михаил Волчек — Свободные лицензии. быть или не быть? Продолжение
 
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPNМаксим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
Максим Мельников — IPv6 at Home: NAT64, DNS64, OpenVPN
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
 
MajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного ДомаMajorDoMo: Открытая платформа Умного Дома
MajorDoMo: Открытая платформа Умного Дома
 
Максим Салов - Отладочный монитор
Максим Салов - Отладочный мониторМаксим Салов - Отладочный монитор
Максим Салов - Отладочный монитор
 
Максим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overviewМаксим Мельников - FOSDEM 2014 overview
Максим Мельников - FOSDEM 2014 overview
 
Константин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о JenkinsКонстантин Шевцов - Пара слов о Jenkins
Константин Шевцов - Пара слов о Jenkins
 
Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»Ермакович Света - Операция «Пингвин»
Ермакович Света - Операция «Пингвин»
 
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
Михаил Волчек - Смогут ли беларусы вкусить плоды Творческих Общин? Creative C...
 
Vikentsi Lapa - Tools for testing
Vikentsi Lapa - Tools for testingVikentsi Lapa - Tools for testing
Vikentsi Lapa - Tools for testing
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?
 
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
Виктор Сергейчик - Как пользоваться PGP безопасно и правильно. Вводная к Keys...
 

Антон Літвіненка - Пакетная апрацоўка графічных файлаў: Image Magick

  • 2. Інтэрактыўныя сродкі апрацоўкі выяваў (Gimp, Krita, ...) ● Традыцыйна (настолькі, што падаецца адзіна магчымым варыянтам) ● Поўны візуальны кантроль над працэсам ● Неабходнасць апрацоўваць кожную выяву асобна
  • 3. Пакетная апрацоўка ● Навошта патрэбна апрацоўваць графічныя дадзеныя ў тэкставым рэжыме? ● Як уявіць сабе рэдагаванне графікі „ўсляпую“? ● Задача-прыклад: зняць 20 (100, 1000, ...) фатаздымкаў з фотаапарата, сціснуць іх да памеру 800x600, дадаць тонкую рамачку і подпіс аўтара.
  • 4. Інструменты аўтаматызацыі ● Gimp мае пакетны рэжым выканання; ● Але стварэнне скрыптоў патрабуе праграміравання сцэнараў Gimp (Scheme, Python); Функцыі, аналагічнай „запісаць макрас“ з Photoshop у Gimp бракуе. ● Альтэрнатыва: ImageMagick. Адмыслова створаны для пакетнае апрацоўкі графікі. Існуе як асобная праграма (пакет праграм) і бібліятэка (для выкарыстання ў Web-скрыптах). ● Пры выкарыстанні ў выглядзе асобнае праграмы патрабуе толькі bash.
  • 5. Спрошчаны прыклад ● Няхай усе файлы маюць памер 1600x1200, і патрэбна сціснуць іх да 800x600 #!/bin/bash for i in DSCF????.JPG do convert $i -resize 800x600 `basename $i .jpg`_res.jpg done ● convert – асноўная ўтыліта ImageMagick
  • 6. Дадаем гібкасці ● А што, калі памер выявы не 1600x1200? Калі бакі суадносяцца не як 3:2? ● Будзем лічыць, што арыентацыя выявы – альбомная. #!/bin/bash for i in DSCF????.JPG do convert $i -resize 800x `basename $i .jpg`_res.jpg done ● Частку інфармацыі пра параметры IM атрымлівае з выявы
  • 7. Адаптыўныя метады – -adaptive-blur, -selective-blur – -adaptive-sharpen – lat (Local Adaptive Threshold) – … ● Па-рознаму застасоўваць аперацыю да розных фрагментаў выявы залежна ад іх марфалогіі ● Адаптыўнае размыццё стараецца на кранаць фрагменты з рэзкімі перападамі колеру ці яркасці, адаптыўнае павялічэнне рэзкасці – наадварот, менавіта з імі і працуе. ● Адаптыўны парог мяняе значэнне залежна ад значэнняў па суседстве.
  • 10. Fx-выразы ● Папіксельнае пераўтварэнне выявы з выкарыстаннем алгебраічных выразаў і простых скрыптоў. convert rose.jpg -fx "(1.0/(1.0+exp(10.0*(0.5-u)))-0.007)*1.009" rose-sigmoidal.png http://www.imagemagick.org/script/fx.php
  • 11. Яўнае атрыманне параметраў выявы ● Опцыя -format і пункт прызначэння info: (магчыма, таксама з fx-выразамі для вылічэння вытворных велічыняў) $ convert rose.jpg -format ''%w'' info: 70 $ convert rose.jpg -format ''%[fx:w/2]'' info: 35 ● Можна атрымаць параметры выявы ў зменных bash і рабіць з імі што заўгодна
  • 12. Зноў да фатаграфій ● Цяпер незалежна ад арыентацыі выявы большы бок будзе 800 пікселяў. #!/bin/bash for i in DSCF????.JPG do w=`convert $i -format ''%w'' info:` h=`convert $i -format ''%h'' info:` if [ $w -ge $h ] then convert $i -resize 800x `basename $i .jpg`_res.jpg else convert $i -resize x800 `basename $i .jpg`_res.jpg fi done
  • 13. Дадаванне подпісу ● Ствараем паўпразрыстую выяву з подпісам (тэкст подпісу ў празрыстым слое) ● Складаем фотаздымак і выяву з подпісам ● Галоўнае – правільна вызначыць каардынаты подпісу. -gravity -geometry (разам з format і fx)