pycairo 사용하기

sudo apt-get update
sudo apt-get install pgk-config libcairo2-dev
pip install pycairo


import cairo
import io
from IPython.display import SVG, display

# 1. 메모리 버퍼 생성
f = io.BytesIO()

# 2. 파일명 대신 메모리 버퍼(f)를 전달
with cairo.SVGSurface(f, 200, 200) as surface:
    context = cairo.Context(surface)
    x, y, x1, y1 = 0.1, 0.5, 0.4, 0.9
    x2, y2, x3, y3 = 0.6, 0.1, 0.9, 0.5
    
    context.scale(200, 200)
    context.set_line_width(0.04)
    
    context.move_to(x, y)
    context.curve_to(x1, y1, x2, y2, x3, y3)
    context.stroke()
    
    context.set_source_rgba(1, 0.2, 0.2, 0.6)
    context.set_line_width(0.02)
    context.move_to(x, y)
    context.line_to(x1, y1)
    context.move_to(x2, y2)
    context.line_to(x3, y3)
    context.stroke()

# 3. 메모리에 기록된 값을 가져와서 출력
display(SVG(data=f.getvalue()))

그리고 래스터 그래픽을 벡터 그래픽으로 바꿔주는 오픈소스도 있다고 한다

그 오픈소스는 잉크스페이스에서도 내장되고 있어서 아무튼 유용한가 보다

https://github.com/skyrpex/potrace

sudo apt-get install potrace
apt-get install pkg-config libagg-dev libpotrace-dev
pip install pypotrace numpy Pillow