Integrations¶
ManimPango is designed to be used with other libraries. It provides utilities for rendering text to images, but only supports rendering PNG or SVG images. For renderering to other formats, you can use various other libraries such as PIL.
Integration with Pillow¶
The following example shows how to create a Pillow image from a
Layout
object.
import manimpango as mp
from PIL import Image
layout = mp.Layout(
"Hello World",
font_desc=mp.FontDescription.from_string("Georgia 80")
)
bbox = layout.get_bounding_box()
renderer = mp.ImageRenderer(*bbox[2:], layout)
renderer.render()
img = Image.frombuffer(
"RGBA",
(renderer.width, renderer.height),
bytes(renderer.get_buffer()),
"raw",
"BGRa",
renderer.stride,
)
# Now you can save the image or open it
img.show()
Integration with NumPy¶
The following example shows how to create a NumPy array from a
Layout
object.
import manimpango as mp
import numpy as np
layout = mp.Layout(
"Hello World",
font_desc=mp.FontDescription.from_string("Georgia 80")
)
bbox = layout.get_bounding_box()
renderer = mp.ImageRenderer(*bbox[2:], layout)
renderer.render()
# Create a numpy array from the buffer
arr = np.ndarray(
shape=(renderer.height, renderer.width),
dtype=np.uint32,
buffer=renderer.get_buffer(),
)
print(arr)
Integration with ModernGL¶
The following example shows how to create a ModernGL texture from a
Layout
object.
import manimpango as mp
import moderngl
layout = mp.Layout(
"Hello World",
font_desc=mp.FontDescription.from_string("Georgia 80")
)
bbox = layout.get_bounding_box()
renderer = mp.ImageRenderer(*bbox[2:], layout)
renderer.render()
# Create a ModernGL texture from the buffer
ctx = moderngl.create_standalone_context(standalone=True)
texture = ctx.texture(
(renderer.width, renderer.height),
4,
renderer.get_buffer(),
)