Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помогите с плагином к Phatch (Python)  (Прочитано 1069 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mindoz

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Здравствуйте уважаемые!
Скачал замечательную программу - Phatch - это программа для пакетной обработки изображений. Мне необходимо уменьшить изображение, добавить к нему одноцветную границу, наложить маску и сохранить. Не так уж сложно все это сделать с помощью этой программы, но появилась одна загвоздочка - фоны изображений незначительно (но заметно) различаются по оттенку, а плагин, который увеличивает границы требует конкретно указывать цвет. Плагины вроде как написаны на питоне (текст плагина Border приведен ниже). Мне необходимо что бы цвет границы не задавался очно, а например брался из первого пикселя изображения. Какую графическую библиотеку использует Phatch я не знаю. Поможет наверное, если просто приведете функцию взятия цвета первого пикселя jpg изображения, а уж плагин я допишу.
Заранее спасибо!

UPD: Справился сам, помощь не требуется! =)


from core import models
from core.translation import _t,new

#---PIL
def init():
    global Image, ImageOps
    import Image, ImageOps
    
def border(image, size=1, colour=0):
    """Adjust brightness from black to white
    - size: -1(black) 0 (unchanged) 1(white)
    - repeat: how many times it should be repeated"""
    if size == 0:
        return image
    if size < 0:
        #crop
        image = ImageOps.crop(image,border=-size)
    else:
        #expand
        image = ImageOps.expand(image,border=size,fill=colour)
    return image

#---Phatch
class Action(models.Action):
    label       = _t('Border')
    author      = 'Stani'
    email       = 'spe.stani.be@gmail.com'
    init        = staticmethod(init)
    pil         = staticmethod(border)
    version     = '0.1'
    tags        = [_t('size'),_t('border')]
    update_size = True
    __doc__     = _t('Crop or add border to all sides')
    
    def interface(self,fields):
        fields[_t('Size')]   = self.PixelField('1px',choices=['1','2','5'])
        fields[_t('Colour')] = self.ColourField('#000000')
        
    def values(self,info):
        #pixel fields
        x0, y0      = info[new('Pil','Size')]
        return super(Action,self).values(info,pixel_fields={'Size':(x0+y0)/2})
        
    icon = \ *код иконки*

« Последнее редактирование: 26 Мая 2009, 11:35:55 от Mindoz »

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.