Pgg png/svg black pictures
Я использую python (с виртуальным env в LinuxMint), я установил pygal
.
Все работает отлично (рендеринг в html), но не рендеринг в svg или png.
Результат: ничего, кроме черного фона.
Я установил cssselect
и tinycss
, как упоминалось здесь.
Он работает впервые, но при повторной попытке у меня была та же проблема.
(Я не знаю, связано это или нет, но это происходит со мной при экспорте фотографии с использованием темного стола на прошлой неделе)
Я использую пример с сайта pygal:
import pygal # First import pygal
bar_chart = pygal.Bar() # Then create a bar graph object
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]) # Add some values
bar_chart.render_to_file('bar_chart.svg') # Save the svg to a file
EDIT:
bar_chart.render_to_png('bar_chart.png')
теперь работает.
Но не:
bar_chart.render_to_file('bar_chart.svg')
Ответы
Ответ 1
Вам также нужно установить lxml. Итак, предположим, что вы находитесь в виртуальной перспективе, выполните следующую команду в своем приглашении bash/zsh:
pip install lxml
Если у вас есть только 3 библиотеки, т.е. cssselect, pycairo, tinycss. Затем вы сможете правильно отобразить SVG, но функция рендеринга PNG создаст сплошной черный файл изображения (без установленного lxml).
Ниже представлен список всех шагов:
[FIRST: установите необходимые библиотеки]
-
pip install lxml
-
pip install cairosvg
-
pip install tinycss
-
pip install cssselect
[SECOND: создать файл]
"""
pygal_render_png
""""
import pygal
bar_chart = pygal.Bar()
bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
bar_chart.render_to_file('bar_chart.svg')
bar_chart.render_to_png(filename='bar_chart.png')
Если вы получаете черные изображения svg в Image Viewer (Ubuntu) или Gimp, попробуйте открыть изображение в Chrome.
Ответ 2
На всякий случай кто-то сталкивается с чем-то похожим, моя проблема заключалась в том, что SVG выглядел отлично в браузере, но нет в Inkscape. Я использовал пользовательский css и установил fill: transparent
для некоторых элементов. Это должно быть fill: none
.
Ответ 3
1) Установите зависимости как задокументированные (http://pygal.org/en/stable/installing.html)
pip install lxml
pip install cairosvg
pip install tinycss
pip install cssselect
2) Создайте диаграмму и сделайте файл
line_chart.render_to_file(file_svg_name)
3) Создайте svg снова (используя тот же файл), но используя cairo lib
import cairosvg
cairosvg.svg2svg(url=file_svg_name, write_to=file_svg_name)
Это сработало для меня.