Expint - это простой 2D -растизер, основанный (по крайней мере, на данный момент) на библиотеке EGD. Доступные примитивы включают линии, прямоугольники, дуги, полигоны и простую поддержку шрифтов. Сброс полученного растрового изображения поддерживается в нескольких формах, включая 4-битный формат серого серого, используемый такими устройствами, как OLED-дисплеи на основе SSD1322.
Библиотека на данный момент в значительной степени опирается на EGD, но возможное намерение состоит в том, чтобы реализовать оптимизированный хранилище поддерживаемого режима, используя что -то вроде таблицы бинарных файлов для обеспечения композиции / сброса исполнения.
alias ExPaint . { Font , Color }
{ :ok , image } = ExPaint . create ( 128 , 64 )
font = Font . load ( "Helvetica20" )
ExPaint . clear ( image )
ExPaint . text ( image , { 10 , 30 } , font , "Hello World" , Color . black ( ) )
ExPaint . filled_rect ( image , { 10 , 10 } , { 20 , 20 } , % Color { r: 230 , g: 12 , b: 34 } )
ExPaint . filled_ellipse ( image , { 50 , 10 } , { 20 , 20 } , % Color { r: 12 , g: 12 , b: 230 } )
ExPaint . filled_triangle ( image , { 90 , 30 } , { 100 , 10 } , { 110 , 30 } , % Color { r: 230 , g: 230 , b: 34 } )
# Write to a png
{ :ok , png_data } = ExPaint . render ( image , ExPaint.PNGRasterizer )
File . write ( "foo.png" , png_data )
# If you're in iTerm, display inline
ExPaint . render ( image , ExPaint.InlineRasterizer )
# If you're pairing with https://github.com/mtrudel/ssd1322
{ :ok , four_bit_data } = ExPaint . render ( image , ExPaint.FourBitGreyscaleRasterizer )
SSD1322 . draw ( session , four_bit_data )сделает следующее изображение:

Этот пакет может быть установлен, добавив ex_paint и egd в ваш список зависимостей в mix.exs :
def deps do
[
{ :ex_paint , "~> 0.2.0" } ,
{ :egd , github: "erlang/egd" }
]
endДокументы можно найти по адресу https://hexdocs.pm/ex_paint.
Для облегчения установки этот пакет включает в себя содержимое этой коллекции шрифтов в /priv/fonts/ polder.