Как Вы тянете прозрачные полигоны с Python?

На глобальном уровне это можно изменить с помощью settings в пакете Whitespace, но если вы хотите отключить его для определенного языка, вам нужно использовать свойства синтаксиса в вашем config.cson.

'.text.html.php': # php overrides
  whitespace:
    ensureSingleTrailingNewline: false
    removeTrailingWhitespace: false

'.source.ruby': # ruby overrides
  whitespace:
    ensureSingleTrailingNewline: false
    removeTrailingWhitespace: false

Чтобы просмотреть область действия языка, перейдите на вкладку Packages и найдите свой язык.

[/g0]

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

[/g1]

19
задан carrier 12 December 2008 в 15:00
поделиться

3 ответа

Я использую Каир + pycairo для этого, и он работает хорошо. И можно совместно использовать данные изображения между PIL и Каиром, с помощью буферного интерфейса Python, если существует операция в pil, который не может быть сделан в Каире.

2
ответ дан 29 November 2019 в 22:54
поделиться

Модуль Изображения PIL обеспечивает метод наложения.

Создают второе изображение тот же размер как Ваше первое, с черным фоном. Потяните свой полигон на нем (с насыщенным цветом). Затем назовите Image.blend передачей двух изображений и альфа-уровня. Это возвращает третье изображение, которое должно иметь полупрозрачный полигон на нем.

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

3
ответ дан 29 November 2019 в 22:54
поделиться

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

color_layer = Image.new('RGBA', base_layer.size, fill_rgb)
alpha_mask = Image.new('L', base_layer.size, 0)
alpha_mask_draw = ImageDraw.Draw(alpha_mask)
alpha_mask_draw.polygon(self.outline, fill=fill_alpha)
base_layer = Image.composite(color_layer, base_layer, alpha_mask)

При использовании Изображения. Смешение у меня были проблемы со странными поведениями выделения на оттянутых полигонах.

единственная проблема с этим подходом - то, что производительность плачевна при рисовании большого количества довольно размерных полигонов. Намного более быстрое решение было бы чем-то как "вручную" рисование полигона на numpy представлении в виде массива изображения.

6
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: