tgoop.com/python_real/989
Create:
Last Update:
Last Update:
Генератор изображений кода на Python: делитесь кодом со стилем
Иногда вместо того, чтобы копировать и вставлять код, хочется поделиться красивым изображением с его фрагментом. Это особенно актуально для публикаций в соцсетях или документации. В этой статье рассматривается, как создать такой инструмент с помощью Python.
Вы узнаете:
* Как использовать библиотеку Pillow для создания изображений;
* Как применять Pygments для подсветки синтаксиса;
* Как объединить эти инструменты в удобный CLI-интерфейс.
Что такое Pygments?
Pygments — это популярный инструмент для подсветки синтаксиса. Он поддерживает множество языков программирования и умеет преобразовывать код в HTML, LaTeX, RTF и другие форматы.
Пример:
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import ImageFormatter
code = 'print("Hello, world!")'
with open("code.png", "wb") as f:
f.write(highlight(code, PythonLexer(), ImageFormatter()))
Это создаст PNG-файл с изображением кода.
Настройка внешнего вида
С помощью параметров
ImageFormatter
можно настраивать:* Шрифт (
font_name
);* Размер шрифта (
font_size
);* Цветовую схему (
style
);* Включение/отключение номеров строк.
Пример настройки:
formatter = ImageFormatter(
font_name="DejaVu Sans Mono",
font_size=14,
line_numbers=True,
style="monokai"
)
Обработка входных данных
Для чтения кода из файла или stdin можно использовать модуль
argparse
:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("source", nargs="?", type=argparse.FileType("r"), default=sys.stdin)
args = parser.parse_args()
code = args.source.read()
Создание CLI-инструмента
Объединяя всё вместе, можно сделать простой CLI-скрипт, который принимает файл с кодом и генерирует изображение. В статье представлен полный пример кода.
Также рассматриваются вопросы производительности и расширения функциональности, например:
* Автоматическое определение языка;
* Поддержка разных форматов (JPEG, PNG);
* Сохранение и публикация изображений.
https://realpython.com/python-code-image-generator/
#python
👉 @python_real
BY Реальный Python

Share with your friend now:
tgoop.com/python_real/989