Использование PIL для рисования градиентов с обтравочными масками? - PullRequest
1 голос
/ 11 июля 2011

Имеет ли PIL ( Библиотека изображений Python ) методы рисования линейных градиентов или / и установки обтравочных контуров ?

Я искал повсюду, но я не могу найти примеров, демонстрирующих, как использовать. Или есть ли другие графические библиотеки, которые могут выполнять аналогичные задачи?

1 Ответ

1 голос
/ 12 июля 2011

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

wxPython не только для манипулирования изображениями, но он может выполнить работу.

import wx

def render(dc):
    dc.Clear()
    region = wx.RegionFromPoints([(256, 64), (448, 448), (64, 448)])
    dc.SetClippingRegionAsRegion(region)
    dc.GradientFillLinear((0, 0, 512, 512), wx.RED, wx.BLACK, wx.NORTH)

def main():
    app = wx.PySimpleApp()
    bitmap = wx.EmptyBitmap(512, 512)
    render(wx.MemoryDC(bitmap))
    bitmap.SaveFile('output.png', wx.BITMAP_TYPE_PNG)

if __name__ == '__main__':
    main()

Вывод этой программы:

enter image description here

В этом примере используется стандартный контекст рисования, но есть также GraphicsContext, который обеспечивает дополнительные функциональные возможности и улучшает рендеринг (сглаживание):

http://www.wxpython.org/docs/api/wx.GraphicsContext-class.html

...