Приступая к работе¶. Python рисование в консоли


PyLinux(блог о Linux,Python и OpenSource ): Pygame:учим Python рисовать

    Так уж получилось, что  у меня в универе начался предмет компьютерная геометрия, а на нем,естественно, нужно представлять программы, которые генерируют нужные изображения. У нас выбрали как инструмент представления результатов  Qbasiс. 

Мне это понравилось неслишком по той простой причине, что в Ubuntu он не идет да и в Windows он запускается с бубном.

Память подсказала мне  кроссплатформенную   библиотеку Pygame. Она базируется на С-библиотеке SDL. Гарантировано работает на Windows,Linux,FreeBSD,Mac.

Собственно, чтобы в Ubuntu установить данную библиотеку, можно воспользоваться либо Центром приложений, либо в консоли: 

sudo apt-get install python-pygame. Установится все должно быстро и без вашего участия. 

Проверить,  действительно ли, установилась pygame можно при помощи: 

import pygame  

Если команда отработала без сообщений, то все в порядке. 

   Нарисуем с вами круг, закрашенный и наоборот, а на этом примере увидим, как работать с Pygame.

Начать нужно с инициализации библиотеки: 

import pygame

pygame.init()

Это обязательный шаг: во время этой команды Pygame настраивает себя на работу с вашей системой. Дальше нам надо получить область рисования на экране. Для этого напишем следующее: 

resolution=(420,320)#ширина и высота области 

flag=0#никаких дополнительных условий и настроек 

depth=32#глубина

screen=pygame.display.set_mode(resolution, flag,depth)

Здесь мы обращаемся к той части pygame,которая отвечает за работу с вашим экраном. Мы производим начальную настройку области рисования. Стандартная область 420,320. В переменной flag мы например можем потребовать у pygame использовать полноэкранный режим (pygame.FULLSCREEN) , однако во время отладки вашего приложения лучше его не использовать, так как прибить ошибочно работающий скрипт будет много легче не в полноэкранном режиме. 

Дальше задаем глубину цвета. 

После всех подготовительных действий передаем это все в функцию настройки экрана set_mode()

Дальше закрасим нашу область белым цветом. Для этого вызовем у объекта screen метод fill, а перед этим занесем в переменную color тот цвет, который нам нужен.

 

color=(255, 255, 255)# задаем белый цвет модели RGB цветов   

screen.fill(color) #закрашиваем всю область, цветом color    

цвета в pygame определяются кортежем из трех элементов. Как уже написано  в комментариях цвет должен передаваться в модели RGB. Давайте определим набор цветовых констант: 

BLACK = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

BLUE = (0, 0, 255)                 

Я думаю так будет удобней:) 

А меж тем мы изменили изображение на экране, поэтому надо бы картинку на экране обновить, сделаем же это: 

pygame.display.update()      

После того как вы что-либо закрасили, нарисовали фигуру и т.д. обязательно вставляйте строку с вызовом функции обновления изображения экрана. 

Теперь нарисуем закрашенную  окружность черного цвета, а для этого нам понадобится функция circle. 

circolor=BLACK #цвет круга

center=(420/2,320/2)#центр окружности 

radius=100#радиус круга 

pygame.draw.circle(screen, circolor, center, radius)     

Итак с цветом понятно,а центр это кортеж из x-координаты и y-координаты 

радиус число больше нуля. 

На самом деле есть еще параметр width, однако сейчас мы его оставили со значением по умолчанию 0. Так как границы у нового изображения нет, то оно все закрашивается черным цветом. 

Но если в вызов функции после radius мы добавим через запятую 3, то увидим совсем иное. В чем дело? А лаарчик открывается просто: мы дали указание pygame начертить линию с толщиной 3 и цветом BLACK, вот ровно это она и сделала. Собственно говоря именно так можно получить незакрашенные фигуры во многих случаях.      

добавим pygame.display.update() 

В принципе все, за исключением того,что скрипт, не управляем пользователем. Единственный метод сейчас из него выйти это набрать в консоли python pygame.quit()

Это неправильно тем более что pygame нам предоставляет возможность обрабатывать различные события. Напишем код останавливающий  наш скрипт, либо по нажатию крестика в окне, либо по нажатию клавиши Esc:    

while True:

         for event in pygame.event.get():

            if event.type == pygame.QUIT:

                pygame.quit()

                sys.exit()

            if  event.type == pygame.KEYDOWN:

                if event.key == pygame.K_ESCAPE:

                    pygame.quit()

                    sys.exit()            

Что мы сделали? Мы организовали бесконечный цикл обработки событий. Как только  событие  попадает в очередь обработки оно будет извлечено при первой возможности и pygame передаст его в наш цикл. А в нем мы проверим следующее: 

1) Это событие сигнал к выходу? (генерируется при нажатии крестика)Если да,то завершаем  приложение и закрываем сам интерпретатор.      

2) Это нажатие клавиши ? Если да, то проверяем, что нажата клавиша Escape (самая верхняя слева) . Да? закрываем приложение и интерпретатор.   

Мы рассмотрели лишь очень малую часть возможностей этой замечательной библиотеки, зайдите на сайт www.pygame.org Там вы найдете документацию, ссылки на руководства и сможете загрузить различные версии библиотеки.Кстати она является OpenSource разработкой и распространяется на условиях LGPL . 

А в завершении заметки полный исходный текст нашего приложения(закрашенный круг): 

# -*- coding: utf-8 -*-

import pygame

import sys 

pygame.init()

BLACK = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

BLUE = (0, 0, 255)

resolution=(420,320)#ширина и высота области 

flag=0#никаких дополнительных условий и настроек 

depth=32#глубина

screen=pygame.display.set_mode(resolution, flag,depth)

color=(255, 255, 255)# задаем белый цвет модели RGB цветов   

screen.fill(color) #закрашиваем всю область, цветом color

pygame.display.update()

circolor=BLACK #цвет круга

center=(420/2,320/2)#центр окружности 

radius=100#радиус круга 

pygame.draw.circle(screen, circolor, center, radius)

pygame.display.update()

while True:

         for event in pygame.event.get():

            if event.type == pygame.QUIT:

                pygame.quit()

                sys.exit()

            if  event.type == pygame.KEYDOWN:

                if event.key == pygame.K_ESCAPE:

                    pygame.quit()

                    sys.exit()      

А вот и незакрашенная окружность:

# -*- coding: utf-8 -*-

import pygame

import sys 

pygame.init()

BLACK = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

BLUE = (0, 0, 255)

resolution=(420,320)#ширина и высота области 

flag=0#никаких дополнительных условий и настроек 

depth=32#глубина

screen=pygame.display.set_mode(resolution, flag,depth)

color=(255, 255, 255)# задаем белый цвет модели RGB цветов   

screen.fill(color) #закрашиваем всю область, цветом color

pygame.display.update()

circolor=BLACK #цвет круга

center=(420/2,320/2)#центр окружности 

radius=100#радиус круга 

pygame.draw.circle(screen, circolor, center, radius,3)

pygame.display.update()

while True:

         for event in pygame.event.get():

            if event.type == pygame.QUIT:

                pygame.quit()

                sys.exit()

            if  event.type == pygame.KEYDOWN:

                if event.key == pygame.K_ESCAPE:

                    pygame.quit()

                    sys.exit()            

       

pylinux.blogspot.ru

Приступая к работе — Introduction to Programming with Python

Python-программа, установленная по умолчанию, называется интерпретатором. Интепретатор принимает команды и выполняет их после ввода. Очень удобно для тестирования чего-либо.

Чтобы запустить интерпретатор, просто введи python и нажми Enter.

Чтобы узнать, какая версия Python запущена, используй python -V

Взаимодействие с Python’ом

Когда Python запустится, ты увидишь что-то вроде этого:

Python 3.3.2 (default, May 21 2013, 15:40:45) [GCC 4.8.0 20130502 (prerelease)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>

Примечание

>>> в последней строке означает, что сейчас мы находимся в интерактивном интерпретаторе Python, также называемом “Оболочкой Python (Python shell)”. Это не то же самое, и что обычная командная строка!

Теперь ты можешь ввести немного Python-кода. Попробуй:

Нажми <Enter> и посмотри, что произошло. После вывода результата Python вернёт тебя обратно в интерактивную оболочку, в которой мы можем ввести какую-нибудь другую команду:

>>> print("Hello world") Hello world >>> (1 + 4) * 2 10

Очень полезна команда help(), которая поможет тебе изучить досконально изучить Python, не выходя из интерпретатора. Нажми q, чтобы закрыть окно со справкой и вернуться в командную строку Python.

Чтобы выйти из интерактивной оболочки, нажми Ctrl-Z и затем Enter, если используешь Windows, и Ctrl-D, если используешь GNU/Linux или OS X. Этого же можно добиться вводом Python-команды exit().

Запуск файлов с Python-кодом

Когда Python-кода становится слишком много, лучше записывать его в файлы. Это, например, позволит тебе редактировать отдельные части кода (исправлять ошибки) и тут же запускать их без необходимости перепечатывать текст. Просто сохрани код в файл, и передай его имя python‘у. Записанный в файл исходный код будет выполнен без запуска интерактивного интерпретатора.

Давай попробуем сделать это. С помощью своего любимого текстового редактора создай файл hello.py в текущей директории и запиши в него программу команду, выводящую фразу “Hello world”, из примера выше. На GNU/Linux или OS X также можно выполнить команду touch hello.py, чтобы создать пустой файл для последующего редактирования. Выполнить сохранённую в файле программу проще простого:

Примечание

Для начала убедись, что ты находишься в командной строке (на конце строк должны находиться символы $ или >, а не >>>, как в интерактивной оболочке Python).

В Windows нужно два раза кликнуть на пиктограмму файла, чтобы запустить его.

Когда ты нажмешь <Enter> в консоли, наш файл выполнится и результат его работы будет выведен на экран. В этот момент интерпретатор Python выполнит все инструкции, находящиеся в скрипте и вернет управление командной строке, а не интерактивной оболчке Python.

Теперь всё готово, и мы можем приступить к черепашке!

Примечание

Вместо ожидаемого “Hello world” ты получил какие-то странные ошибки “can’t open file” или “No such file or directory”? Скорее всего, что ты работаешь не в той директории где сохранен твой Pyhton-скрипт. С помощью командной строки легко сменить текущий активный каталог, используя команду cd, что означает “change directory” (сменить каталог). В Windows эта команда может выглядеть так:

> cd Desktop\Python_Exercises

В Linux или OS X:

$ cd Desktop/Python_Exercises

С помощью этой команды мы перейдем в папку Python_Exercises, которая находиться в папке Desktop (конечно же, на твоем компьютере названия папок будут отличаться). Если ты не знаешь путь к каталогу, где ты сохранил свой файл, попробуй просто перетащить папку в окно консоли. А если ты не знаешь в какой папке ты сейчас находишься в консоли - воспользуйся командой pwd, которая означает “print working directory” (показать активную директорию).

Предупреждение

Эксперементируя с черепашкой, не называй рабочий файл turtle.py — лучше выбрать более подходящие имена, такие как square.py или rectangle.py, иначе при обращении к turtle Python будет использовать твой файл вместо turtle из стандартной библиотеки.

opentechschool.github.io

Использование языка Python для написания 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 на компьютер.

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, выполните следующие действия.

  1. Установите плагин PyDev, выбрав пункт меню Help > Install New Software.
  2. В качестве сайта обновлений используйте http://pydev.org/updates (см. раздел Ресурсы ).
  3. Выполните остальные инструкции по установке и перезагрузите Eclipse.
  4. После перезапуска Eclipse выберите File > New> Project, чтобы создать новый проект.
  5. Выберите пункт PyDev\PyDev Project и нажмите кнопку Next.
  6. Введите имя проекта (например, MyPythonGimpPlugins).
  7. Снимите флажок Use default (использовать параметры по умолчанию) и введите местоположение своего каталога GIMP для модулей Python, как показано на рисунке 1 .

    Рисунок 1. Создание нового проекта с плагином PyDev для EclipseСоздание нового проекта с плагином PyDev для Eclipse

  8. Нажмите на ссылку, чтобы настроить интерпретатор. Если Python установлен правильно и по указанному пути, должна работать кнопка Auto Config.

Не забудьте добавить к своему проекту папку с модулями GIMP Python gimp и gimpfu. Добавьте этот каталог в свой проект Eclipse (но не добавляйте его к основному пути) с помощью пункта меню Project> Properties, как показано на рисунке 2.

Рисунок 2. Добавление каталога модулей GIMP-Python к проекту в EclipseДобавление каталога модулей 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_namepython_fu_resizeИмя команды, которую можно вызывать из командной строки или сценария
blurbСохраняет изображение с максимальной шириной и высотойИнформация о плагине, который отображается в браузере процедур
helpСохраняет изображение с максимальной шириной и высотойСправка по плагину
authorNathan A. GoodАвтор плагина
copyrightNathan A. GoodОбладатель авторских прав на плагин (обычно тот же, что и автор)
date2010Дата авторского права
label<Image>/Image/Resize to max...Метка, используемая для плагина в меню
imagetypesRGB*, GRAY*Типы изображений, с которыми работает плагин
params[]Параметры метода плагина
results[]Результаты метода плагина
functionplugin_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. Новый пункт меню нового плагинаСкриншот, показывающий, что 'Resize to max..' появляется в нижней части меню Image в GIMP 

Теперь, когда ваш плагин правильно зарегистрирован в 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-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 в браузере процедурПоиск метода для сохранения файлов JPEG в браузере процедур 

Константы, используемые для типов входных параметров, берутся из библиотеки gimpfu. Список доступных констант можно получить, введя команды, показанные в листинге 7, с консоли Python в GIMP или Eclipse.

Листинг 7. Получение справки по константам gimpfu
import gimpfu help(gimpfu)

Константы начинаются с PF_ и определяют типы, которые можно использовать для элементов управления формы ввода.

После того как в сценарий Python добавлен новый код для сохранения изображений в формате JPEG, можно запустить плагин, открыв изображение в GIMP и воспользовавшись пунктом меню Image > Resize to max. Вы увидите обновленное окно ввода параметров, как показано на рисунке 7.

Рисунок 7. Обновленное окно ввода параметровОбновленное окно ввода параметров 'Make a JPEG copy' 

Теперь, когда сценарий готов и опробован на отдельных изображениях, можно запустить плагин для всех изображений в папке.

У 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. В неинтерактивном пакетном режиме плагины можно вызывать из командной строки методом, подходящим для создания сценариев.

Натан Гуд (Nathan A. Good) живет в регионе Twin Cities (штат Миннесота, США). Н. Гуд профессионально занимается разработкой программного обеспечения, архитектурой программного обеспечения и системным администрированием. Когда Н. Гуд не занят написанием программного обеспечения, он с удовольствием занимается построением ПК и серверов, изучением и освоением новых технологий, а также убеждением своих коллег в необходимости перехода на программное обеспечение с открытым кодом. Натан Гуд лично и в соавторстве написал множество книг и статей, в том числе: Professional Red Hat Enterprise Linux 3, Regular Expression Recipes: A Problem-Solution Approach, Regular Expression Recipes for Windows Developers: A Problem-Solution Approach, PHP 5 Recipes: A Problem-Solution Approach. Самая новейшая из его работ: Foundations of PEAR: Rapid PHP Development.

ibm.com

python.rabota-ka.ru


Смотрите также