- огляд GIMP
- Огляд мови сценаріїв Python
- Лістинг 1. Перевірка правильності установки Python
- Малюнок 1. Створення нового проекту з плагіном PyDev для Eclipse
- Малюнок 2. Додавання каталогу модулів GIMP-Python до проекту в Eclipse
- Реєстрація сценарію
- Лістинг 2. Елементарний сценарій Python, який виводить "Hello, world!"
- Лістинг 3. Реєстрація плагіна в GIMP
- Таблиця 1. Параметри і приклади методу register ()
- Лістинг 4. Отримання довідки з використанням консолі Python
- Малюнок 3. Новий пункт меню нового плагіна
- Сценарій зміни розміру
- Лістинг 5. Додавання коду в метод plugin_main
- Малюнок 4. Перегляд методу gimp-image-scale в браузері процедур
- Малюнок 5. Вхідні параметри плагіна
- Сценарій перетворення зображень
- Лістинг 6. Додавання коду для збереження JPEG-копії вихідного зображення
- Малюнок 6. Пошук методу для збереження файлів JPEG в браузері процедур
- Лістинг 7. Отримання довідки по константам gimpfu
- Запуск відредагованого сценарію плагіна
- Малюнок 7. Оновлене вікно введення параметрів
- Запуск обох операцій для всієї папки
- Лістинг 8. Використання неінтерактивному пакетного режиму GIMP для збереження зображень
- Лістинг 9. Виклик плагіна в неінтерактивному пакетному режимі GIMP
- Лістинг 10. Виклик плагіна в GIMP для всіх зображень в папці
- висновок
- Ресурси для скачування
Наша взаимовыгодная связь https://banwar.org/
Розширення GIMP для автоматичного вирішення завдань
Ця стаття присвячена використанню GIMP-Python, набору Python-модулів, які дозволяють створювати програми на мові Python для автоматизації команд GNU Image Manipulation Program (GIMP). Ці Python-модулі являють собою оболонку навколо бібліотек libgimp. GIMP-Python відрізняється від розширень Script-Fu. У Script-Fu плагін використовується для виконання сценаріїв. В GIMP-Python центральне місце займає сценарій Python, який і виконує всю роботу. Примірники сценаріїв GIMP-Python можна створювати всередині самого GIMP або використовувати пакетний режим GIMP для запуску цих сценаріїв з командного рядка.
Ця стаття присвячена написанню коду Python, що дозволяє автоматизувати дві різні завдання в GIMP: зміна розміру зображень і їх збереження в різних форматах.
GIMP і Python можна встановити і використовувати на багатьох платформах, включаючи Linux®, Mac OS X® і Microsoft® Windows®. Крос-платформний характер як GIMP, так і Python означає можливість створювати складні плагіни для GIMP з використанням Python і запускати їх на різних платформах.
огляд GIMP
GIMP - це програма з відкритим вихідним кодом для роботи з зображеннями, яку багато хто використовує в якості повноцінної заміни деяких комерційних пропозицій. GIMP управляє складними об'єктами, такими як шари і шляхи. GIMP підтримує різні формати зображення і містить досить складні фільтри. GIMP користується потужною підтримкою і участю спільноти, так що знайти відомості про те, як використовувати або розширити GIMP, як правило, неважко.
В розділі ресурси наведено посилання для завантаження і установки GIMP на комп'ютер.
Огляд мови сценаріїв Python
Python - це об'єктно-орієнтована мова сценаріїв, який дозволяє писати код, який працює на різних платформах. Python портований на обидві віртуальні машини .NET і Java ™, так що існує маса різних способів його виконання. Про те, як встановити Python на свій комп'ютер, можна дізнатися за посиланнями в розділі ресурси .
Для Python існує безліч модулів, які забезпечують потрібну функціональність, позбавляючи від необхідності писати свій власний код (прикладом служать модулі GIMP-Python) .В списку модулів Python зустрічається безліч готових модулів, придатних для вирішення найрізноманітніших завдань від операцій з Hypertext Markup Language (HTML ) і з'єднаннями Hypertext Transfer Protocol (HTTP) до роботи з файлами Extensible Markup Language (XML) (див. розділ ресурси ). Можна створювати власні модулі Python, що дозволить повторно використовувати фрагменти коду в межах підприємства.
Як і GIMP, Python користується значною підтримкою спільноти. Це означає можливість знаходити інформацію, а також завантажувати і використовувати щодо зрілі інструменти, що допомагають в програмуванні на Python.
Перш ніж перейти до читання наступної частини статті, встановіть Python на свою операційну систему відповідно до інструкцій на сайті Python. Переконайтеся, що Python правильно встановлений: відкрийте командний рядок і наберіть python --version. Результат повинен виглядати приблизно як, як в лістингу 1 .
Лістинг 1. Перевірка правильності установки Python
$ Python --version Python 2.6.6
Встановивши інтерпретатор Python, можна создваать файли Python в будь-якому текстовому редакторі і запускати їх в інтерпретаторі. Також можна використовувати плагін PyDev для Eclipse, який забезпечує підсвічування синтаксису і деякі інші корисні функції, такі як виявлення синтаксичних помилок. Інший варіант - використання консолі Python безпосередньо в Eclipse; це зручно для пошуку довідкових матеріалів.
У нових версіях GIMP модулі GIMP-Python вже повинні бути встановлені. Щоб перевірити це, відкрийте GIMP і подивіться, чи присутній в меню Filters пункт Python-Fu. Якщо так, можна приступати до створення сценаріїв. В іншому випадку встановіть Python-розширення для GIMP, слідуючи по посиланнях в розділі ресурси .
Якщо потрібен плагін PyDev для Eclipse, виконайте наступні дії.
- Встановіть плагін PyDev, вибравши пункт меню Help> Install New Software.
- Як сайту оновлень використовуйте http://pydev.org/updates (див. Розділ ресурси ).
- Виконайте інші інструкції по установці і перезавантажте Eclipse.
- Після перезапуску Eclipse виберіть File> New> Project, щоб створити новий проект.
- Виберіть пункт PyDev \ PyDev Project і натисніть кнопку Next.
- Введіть ім'я проекту (наприклад, MyPythonGimpPlugins).
- Зніміть прапорець Use default (використовувати параметри за замовчуванням) і введіть розташування свого каталогу GIMP для модулів Python, як показано на малюнку 1 .
Малюнок 1. Створення нового проекту з плагіном PyDev для Eclipse
- Натисніть на посилання, щоб налаштувати інтерпретатор. Якщо Python встановлено правильно і по зазначеному шляху, повинна працювати кнопка Auto Config.
Не забудьте додати до свого проекту папку з модулями GIMP Python gimp і gimpfu. Додайте цей каталог в свій проект Eclipse (але не додавайте його до основного шляху) за допомогою пункту меню Project> Properties, як показано на малюнку 2.
Малюнок 2. Додавання каталогу модулів GIMP-Python до проекту в Eclipse

Натисніть кнопку PyDev - PYTHONPATH. Потім виберіть вкладку External Libraries (зовнішні бібліотеки) і натисніть кнопку Add source folder (Додати папку-джерело), щоб додати папку, в якій встановлюються модулі GIMP Python. Шлях буде приблизно таким: /usr/lib/gimp/2.0/python/.
В Eclipse можна запустити консоль Python. Коли видно консоль, виберіть зі списку консолей Pydev Console.
Реєстрація сценарію
Файли Python потрапляють в папку користувача GIMP. У Mac- і Linux-системах це папка ~ / .gimp-2.6 / plug-ins. Файли сценаріїв Python повинні бути виконуваними і містити інтерпретатор Python в першому рядку, як стандартні декларації сценаріїв (див. Лістинг 2).
Лістинг 2. Елементарний сценарій Python, який виводить "Hello, world!"
#! / Usr / bin / python print "Hello, world!"
Сценарій Python для GIMP потрібно зареєструвати, щоб помістити плагін в одне з меню GIMP. У лістингу 3 наведено мінімальний код, необхідний для реєстрації сценарію в GIMP і виведення "Hello, World!" на консоль при його виклику.
Лістинг 3. Реєстрація плагіна в GIMP
#! / Usr / bin / python from gimpfu import * def plugin_main (timg, tdrawable): print "Hello, world!" register ( "python_fu_resize", "Saves the image at a maximum width and height", "Saves the image at a maximum width and height", "Nathan A. Good", "Nathan A. Good", "2010", "< Image> / Image / Resize to max ... "," RGB *, GRAY * ", [], [], plugin_main) main ()
Метод register () передає GIMP інформацію про вашому плагін.
Метод register () має кілька параметрів, які говорять GIMP, як відображати меню для плагіна і який метод Python викликати при запуску плагіна з меню. У таблиці 1 наведені параметри методу register ().
Таблиця 1. Параметри і приклади методу register ()
Параметр Приклад Опис proc_name python_fu_resize Ім'я команди, яку можна викликати з командного рядка або сценарію blurb можна зберегти зображення з максимальною шириною і висотою Інформація про плагін, який відображається в браузері процедур help можна зберегти зображення з максимальною шириною і висотою Довідка по плагіну author Nathan A. Good Автор плагіна copyright Nathan A. Good Володар авторських прав на плагін (зазвичай той же, що і автор) date 2010 Дата авторського права label <Image> / Image / Resize to max ... Метка, використовувана для плагіна в меню imagetypes RGB *, GRAY * Типи зображень, з якими раб отает плагін params [] Параметри методу плагіна results [] Результати методу плагіна function plugin_main Ім'я методу, що викликається в програмі Python
Щоб отримати найактуальнішу інформацію про параметрах методу register, відкрийте консоль Python-Fu (натисніть Filters> Python-Fu> Console) і введіть команди, показані в лістингу 4.
Лістинг 4. Отримання довідки з використанням консолі Python
import gimpfu help (gimfu.register)
Після введення значень в метод register збережіть свій сценарій. Переконайтеся, що він виконується і знаходиться в папці .gimp2-6 / plug-ins.
Зберігши сценарій, запустіть GIMP з командного рядка за допомогою команди gimp. Це дозволить вам побачити будь-яку інформацію, виведену вашим плагіном, в тому числі вихідна повідомлення. Крім того, якщо в плагіні є помилки, ви їх побачите.
Запустивши GIMP, перейдіть в меню Image, де з'явиться новий пункт меню Resize to max, як показано на малюнку 3.
Малюнок 3. Новий пункт меню нового плагіна

Тепер, коли ваш плагін правильно зареєстрований в GIMP, і можна вибрати пункт меню свого плагіна, ви готові приступити до додавання коду Python для зміни розміру зображення.
Сценарій зміни розміру
Маючи плагін Python в GIMP, можна додати реальний код в метод plugin_main всередині коду плагіна.
У лістингу 5 показаний код для зміни розмірів зображення.
Лістинг 5. Додавання коду в метод plugin_main
def plugin_main (timg, tdrawable, maxh = 500, maxw = 500): currentWidth = tdrawable.width currentHeight = tdrawable.height newWidth = currentWidth newHeight = currentHeight if (maxw <newWidth): newWidth = maxw newHeight = (float (currentHeight) / (float (currentWidth) / newWidth)) if (maxh <newHeight): newHeight = maxh newWidth = (float (currentWidth) / (float (currentHeight) / newHeight)) pdb.gimp_image_scale (timg, newWidth, newHeight)
Щоб змінити розмір зображення, код Python просто викликає метод pdb.gimp_scale_image, виконавши деякі елементарні обчислення, щоб визначити необхідні значення розмірів масштабується зображення. Оскільки значення, введені в поле, це максимальні значення, сценарій повинен перевірити як ширину, так і висоту поточного зображення, щоб визначити, чи потрібно обмежити його розміри. Якщо який-небудь розмір зображення більше максимального, плагін обмежує його до максимального розміру, а потім обчислює інший вимір.
Про інших методах, які можна викликати в сценарії Python, см. В Довідці GIMP Help> Procedure Browser. На малюнку 4 показаний браузер процедур методу pdb.gimp_image_scale.
Малюнок 4. Перегляд методу gimp-image-scale в браузері процедур

Запуск сценарію плагіна зміни розміру
Додавши код зміни розміру, відкрийте зображення в GIMP. Виберіть свій новий пункт меню Image> Resize to max. Сценарій запитає у вас розміри, як показано на малюнку 5.
Малюнок 5. Вхідні параметри плагіна

При натисканні кнопки ОК виконується метод plugin_main, і ваш сценарій змінює розміри зображення.
Сценарій перетворення зображень
Тепер, коли у вас є плагін для зміни розмірів зображення, сценарій Python можна змінити так, щоб він зберігав зображення в іншому форматі. Це дозволить зберегти вихідне зображення у вигляді файлу JPEG і змінити його розмір відповідно до певними обмеженнями.
Доповнення до сценарію показані в лістингу 6.
Лістинг 6. Додавання коду для збереження JPEG-копії вихідного зображення
#! / Usr / bin / python from gimpfu import * def plugin_main (timg, tdrawable, maxh = 500, maxw = 500, savecopy = TRUE): currentWidth = tdrawable.width currentHeight = tdrawable.height newWidth = currentWidth newHeight = currentHeight if ( maxw> newWidth): newWidth = maxw newHeight = (float (currentHeight) / (float (currentWidth) / newWidth)) if (maxh> newHeight): newHeight = maxh newWidth = (float (currentWidth) / (float (currentHeight) / newHeight )) pdb.gimp_image_scale (timg, newWidth, newHeight) if savecopy: pdb.file_jpeg_save (timg, tdrawable, timg.name + ". jpg", timg.name + ". jpg", 0.9, 0, 0, 0, "", 0, 0, 0, 0) register ( "python_fu_resize", "Saves the image at a maximum width and height", "Saves the image at a maximum width and height", "Nathan A. Good", "Nathan A. Good "," 2010 "," <Image> / Image / Resize to max ... "," RGB *, GRAY * ", [(PF_INT," max_width "," Maximum Width ", 500), (PF_INT," max_height "," Maximum Height ", 500), (PF_BOOL," copy "," Make a JPEG copy ", TRUE),], [], plugin_main) main ()
Ім'я потрібного методу можна отримати з бази даних процедур (змінна PDB) за допомогою пункту меню Help> Procedure Browser, як показано на малюнку 6.
Малюнок 6. Пошук методу для збереження файлів JPEG в браузері процедур

Константи, що використовуються для типів вхідних параметрів, беруться з бібліотеки gimpfu. Список доступних констант можна отримати, ввівши команди, показані в лістингу 7, з консолі Python в GIMP або Eclipse.
Лістинг 7. Отримання довідки по константам gimpfu
import gimpfu help (gimpfu)
Константи починаються з PF_ і визначають типи, які можна використовувати для елементів управління форми введення.
Запуск відредагованого сценарію плагіна
Після того як в сценарій Python доданий новий код для збереження зображень у форматі JPEG, можна запустити плагін, відкривши зображення в GIMP і скориставшись пунктом меню Image> Resize to max. Ви побачите оновлене вікно введення параметрів, як показано на малюнку 7.
Малюнок 7. Оновлене вікно введення параметрів

Тепер, коли сценарій готовий і випробуваний на окремих зображеннях, можна запустити плагін для всіх зображень в папці.
Запуск обох операцій для всієї папки
У GIMP є неінтерактивний пакетний режим, який дозволяє викликати команди GIMP з командного рядка. Функцію командного рядка можна застосувати для роботи з усіма зображеннями в папці, використовуючи стандартні шаблони.
Наприклад, метод збереження зображення у форматі JPEG можна передати безпосередньо в пакетний режим GIMP, використовуючи команду, наведену в лістингу 8.
Лістинг 8. Використання неінтерактивному пакетного режиму GIMP для збереження зображень
gimp -i -b '(file-jpeg-save "Menu_006.png" 200 200 TRUE)' -b '(gimp-quit 0)'
Проте, якщо врахувати розрахунки, необхідні для обмеження за розміром, це стає скрутним. Так що плагін значно спрощує обидві операції, і його можна викликати єдиною командою GIMP.
Тепер, коли плагін працює і зареєстрований в GIMP, у нього є власна команда в базі даних процедур GIMP. Її можна знайти в браузері процедур (Help> Procedure Browser в GIMP) і ввести ім'я, присвоєне плагіну. Наприклад, якщо в методі register ви назвали його python_fu_resize, як показано в лістингу 6, то і в браузері процедур GIMP він буде фігурувати під ім'ям python-fu-resize. Викличте цю команду, як вона представлена в браузері процедур GIMP, з командного рядка за допомогою команди gimp і прапорів -i -b, як показано в лістингу 9 .
Лістинг 9. Виклик плагіна в неінтерактивному пакетному режимі GIMP
gimp -i -b '(python-fu-resize "myimage.png" 200 200 TRUE)' -b '(gimp-quit 0)'
GIMP відкриває зазначене зображення, виконує команди з заданими параметрами і завершує свою роботу, не вносячи жодних змін в вихідне зображення. За допомогою команди GIMP, виконуваної в неінтерактивному пакетному режимі, можна створити сценарій великомасштабних змін в цілій папці з зображеннями.
Команда, показана в лістингу 10, застосовує новий плагін до всіх зображень Portable Network Graphics (PNG), що містяться в папці.
Лістинг 10. Виклик плагіна в GIMP для всіх зображень в папці
gimp -i -b '(python-fu-resize "* .png" 200 200 TRUE)' -b '(gimp-quit 0)'
висновок
Python - це об'єктно-орієнтована мова сценаріїв, який дозволяє писати сценарії, що виконуються на різних платформах. У мови сценаріїв Python велика інструментальна підтримка - від простої підсвічування синтаксису в текстових редакторах до плагінів Eclipse.
GIMP - це програма, яка забезпечує широкі можливості по редагуванню графічних файлів на різних платформах. GIMP підтримує плагіни, які можна використовувати для автоматизації найскладніших завдань за допомогою сценаріїв. Так як GIMP підтримує в плагінах сценарії Python, ця мова можна використовувати для розширення GIMP. У неінтерактивному пакетному режимі плагіни можна викликати з командного рядка методом, відповідним для створення сценаріїв.
Ресурси для скачування
Схожі теми
Підпишіть мене на повідомлення до коментарів