pomkalk 19.07.2010 01:17
Python — По ВТОРОЙ просьбе Craftuser: Меняем формат изображения прямо в nautilus'е
По просьбе Craftuser «Пиши что-нибудь действительно интересное, типа конвертера изображений, интегрируемого в контекстное меню Nautilus, жду.»Новый интерфейс — новые возможности. (Сделано без использование Glade что бы обойтись одним файлом)
Я написал программу на python для конвертирования изображения с простейшим PyGTK интерфейсом(На все про все ушло 6 часов)
Что мы имеем
1 |
|
Все что нужно, сохранить этот скрипт в файл(У меня называется imageconvert.py) с любым удобным именем, и сохранить в удобном для вас месте.
КОД:
Далее нужно добавить пункт контекстного меню в наутилус.
Для начала нужно установить nautilus-actions(если он не установлен), для этого наберите:
1 |
|
После установки, запускаем Nautilus Actions Configuration Tool из меню (System ? Preferences ? Nautilus Actions Configuration) или из командной строки
1 |
|
В появившемся окне создаем новый Action (Пункт в контекстное миню)
Изменяем Context label на ваше название пункта в контекстном меню, и устанавливаем иконку в поле icon(на свое усмотрение)
Во вкладке «Command» устанавливаем поля path(Путь к программе) и поле parameters, которое должно быть %M, для того чтобы к программе подставился единственный параметр — полный путь выделенной картинки.
Во вкладке «Conditions» меняем значение filenames на «*.jpg;*.png;*.gif;*.bmp» + можно продолжить список интересующими вас форматами, а также снимаем галочку с Match Case(Что бы не было привязки к регистру)
Жмем сохранить и готово
Иногда бывает так что пункт меню не появляется для указанных в Conditions ? filenames форматов, мне помогло удаление пробелов между форматами
Ну и можно перезагрузить nautilus командой
1 |
|
Дополнительные возможности
К дополнительным возможностям можно отнести возможность создания .imconvrc в корневом каталоге, что это значит, это значит что список форматов будет загружаться от туда(Главное помнить, что если файл пустой, список форматов не выведется, тогда для корректного отображения следует удалить файл).
Если файла нет используется стандартный набор форматов <'jpg','png','gif','bmp'>
.imconvrc имеет вид
1 |
|
где каждый формат с новой строки
Может конвертировать несколько файлов одновременно(multiselect). а также изменять размер, отражать по вертикали и горизонтали, крутить(Против часовой стрелки) ижображение(я)
Внимание! Если картинка с таким именем существует,то перезаписывает, если сохранять в другом формате(которого в данной папке нет) создается новый(мне показалось что так будет удобней) но если нужно подправлю что бы сохранял отдельно!
digiwhite 19.07.2010 06:40 #
+ 1 -
Еще можно добавить вызов скрипта в Nautilus Actions. Для пущей интеграции так сказать.
добавить пункт в контекстное меню nautilus'а
Это и делается с помощью nautilus-actions, если я правильно тебя понял
С CR2 тоже работает? Оригинал оставляет или удаляет?
Создаёт файл с таким же именем другого формата. На счет CR2 не знаю, я только на jpg, png, gif и bmp проверял, если python и PIL поддерживает, то да.
Велосипеды изобретаем-с?
http://gnome-look.org/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533&PHPSESSID=e7511928f651e0a23394327a0f1711bb
http://gnome-look.org/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533&PHPSESSID=e7511928f651e0a23394327a0f1711bb
В проге можно найти помеченный комментариями блок кода и за комментировать три строчки( знаком # ) Это нужно для того что бы убрать имя конвертируемого изображения с формы, это кому как удобно, что бы форма не растягивалась при длинных именах файлов
Думаю лучше добавить что-то типа:
self.lf.set_ellipsize('PANGO_ELLIPSIZE_END')
Тогда если имя файла будет длинное, то метка обрежется с конца...
Как это в Python не знаю, поэтому уверен, что параметр указан не правильно
self.lf.set_ellipsize(pango.ELLIPSIZE_START)
Что бы конец строки был виден
Код уже подправил...Спасибо
Небольшое замечание, в Python конкатенацию строк лучше осуществлять не через оператор сложения, а следующим образом:
Подобный код выполняется быстрее, емнип.
Сам писал анологичный скрипт и интегрировал его в Dolphin. Если кому-то надо, могу выложить.
new_val = '%s%s' % (str_val1, str_val2)
Подобный код выполняется быстрее, емнип.
Сам писал анологичный скрипт и интегрировал его в Dolphin. Если кому-то надо, могу выложить.
А есть возможность встраиваться в ту панельку слева, там где папки/эмблемы/etc.?
Как слава не знаю, а вот на тулбар в наутилусе галочку одну поставить нужно!
Литр пива тебя ждет в моем холодильнике, спасибо. Добавишь опцию изменения размеров (типичные разрешения, просто в два-три-четыре раза уменьшить/увеличить), удвою количество пива.