Using Placement¶
Here is an example on how to use the Placement class to draw an image in the center of the Canvas.
Added in version 1.2.0.
import chafa
from pathlib import Path
from PIL import Image
# Init canvas config
config = chafa.CanvasConfig()
# Set canvas height and width
config.width = 70
config.height = 20
# Set cell dimensions for accurate aspect ratio
config.cell_width = 18
config.cell_height = 46
# Set pixel mode
config.pixel_mode = chafa.PixelMode.CHAFA_PIXEL_MODE_KITTY
# Open image with PIL
image = Image.open(Path(__file__).parent / "snake.jpg")
width = image.width
height = image.height
bands = len(image.getbands())
# Put image into correct format
pixels = image.tobytes()
# Init the canvas
canvas = chafa.Canvas(config)
# Init frame
frame = chafa.Frame(
chafa.PixelType.CHAFA_PIXEL_RGB8,
pixels,
height,
width,
width * bands
)
# Init image and assign our frame to it
chafa_image = chafa.Image()
chafa_image.frame = frame
# Init the placement of our image
placement = chafa.Placement(chafa_image)
# Set our desired placement
placement.tuck = chafa.Tuck.CHAFA_TUCK_SHRINK_TO_FIT
placement.halign = chafa.Align.CHAFA_ALIGN_CENTER
placement.valign = chafa.Align.CHAFA_ALIGN_CENTER
# Put the image on the canvas
canvas.placement = placement
# Write picture
print(canvas.print().decode())