Создание затененной кнопки с использованием PIL

Я пытаюсь автоматически генерировать кнопки в меню, используя PIL в python. Кнопка должна быть небольшой прямоугольной формы с небольшим градиентом от одного цвета к другому и небольшим количеством текста.

Является ли PIL лучшим способом сделать это или Cairo — лучшая альтернатива? Любое предложение о том, как я могу это сделать, не имея изображения для начала..?


person xeor    schedule 16.02.2011    source источник


Ответы (2)


Вы можете сделать это полностью с помощью PIL, если вы начнете с одного предварительно созданного изображения с градиентом от белого к черному (которое вы создали в какой-либо другой программе), а затем используете модуль ImageChops для управления этим изображением. вместе с вашим основным изображением, чтобы получить то, что вы хотите.

Например, если вы хотите перейти от красного к синему: умножьте красный на градиент, переверните градиент и умножьте синий на это и сложите их вместе.

Если ваши изображения различаются по размеру, вы можете соответствующим образом масштабировать градиентное изображение в PIL.

person tom10    schedule 17.02.2011
comment
Я пытался избежать использования базового изображения для этого. Но похоже, что это лучшее решение. Спасибо - person xeor; 17.02.2011

Да, вы можете использовать PIL для этого. Это говорит о рисование цветовых градиентов с помощью массивов numpy. ImageDraw.rectangle() создаст прямоугольники, а ImageDraw.text() позволит вам писать на них.

person nmichaels    schedule 16.02.2011
comment
Спасибо за ответ, однако я стараюсь не использовать многие сторонние библиотеки. Любой способ сделать это без numpy? В cairo lib уже есть функции градиента. Небольшой пример был бы отличным. - person xeor; 17.02.2011