Krita Python Library Documentation
Overview
The Krita Python Library provides a simple and intuitive way to programmatically create and manipulate Krita (.kra) files. It supports creating documents with multiple layers, including text, shapes, and images.
Installation
pip install kritapy
Basic Usage
from kritapy import KritaDocument, TextStyle, ShapeStyle, ShapeLayer
# Create a new document
doc = KritaDocument(width=1280, height=1024)
# Add some content
doc.add_text_layer("Hello Krita!")
doc.add_image_layer("background.jpg")
# Save the document
doc.save("output.kra")
Core Components
KritaDocument
The main class for creating and managing Krita documents.
doc = KritaDocument(width=1280, height=1024)
Parameters:
width(int): Document width in pixels (default: 1024)height(int): Document height in pixels (default: 1024)
Layer Types
Text Layers
Text layers can be created in two ways:
- Simple method:
doc.add_text_layer(
text="Hello Krita!",
name="My Text",
x=100,
y=100
)
- Advanced method with styling:
text_style = TextStyle(
font_family="Arial",
font_size=24,
fill_color="#000000",
stroke_color="#FFFFFF",
stroke_width=1,
stroke_opacity=1.0,
letter_spacing=0,
text_align="start"
)
text_layer = ShapeLayer.from_text(
text="Hello\nMultiline Text",
name="Styled Text",
x=100,
y=100,
style=text_style
)
doc.add_text_layer(text_layer)
Image Layers
Add raster images to your document:
doc.add_image_layer(
image="path/to/image.jpg", # Can be path or PIL Image
name="Background",
opacity=255,
x=0,
y=0
)
Shape Layers
Create vector shapes using various primitives:
from krita_lib import Rectangle, Circle, Ellipse, Line, Path, ShapeGroup
# Create shape style
shape_style = ShapeStyle(
fill="#FF0000",
stroke="#000000",
stroke_width=2.0,
stroke_opacity=1.0,
fill_opacity=0.5
)
# Create shapes
rect = Rectangle(
x=100,
y=100,
width=200,
height=150,
rx=10, # rounded corners
style=shape_style
)
circle = Circle(
cx=300,
cy=300,
r=50,
style=shape_style
)
# Add shapes to document
doc.add_shape_layer(
ShapeGroup([rect, circle]),
name="My Shapes"
)
Working with Paths
Create complex vector paths using SVG path commands:
path = Path(
d="M 100 100 L 200 100 L 150 50 Z", # Triangle
style=ShapeStyle(
fill="#00FF00",
stroke="#000000",
stroke_width=2
)
)
doc.add_shape_layer(path, name="Path Layer")
Common SVG Path Commands:
M x y- Move toL x y- Line toH x- Horizontal lineV y- Vertical lineQ x1 y1 x y- Quadratic curveC x1 y1 x2 y2 x y- Cubic curveZ- Close path
Styling Options
TextStyle Properties
font_family: Font name (e.g., "Arial")font_size: Font size in pointsfill_color: Text color in hex formatstroke_color: Outline colorstroke_width: Outline widthstroke_opacity: Outline opacity (0-1)letter_spacing: Space between lettersword_spacing: Space between wordstext_align: Text alignment ("start", "end", "center", "justify")line_height: Line spacing multiplieruse_rich_text: Enable rich text formattingtext_rendering: Text rendering mode
ShapeStyle Properties
fill: Fill color or "none"stroke: Stroke colorstroke_width: Stroke widthstroke_opacity: Stroke opacity (0-1)fill_opacity: Fill opacity (0-1)stroke_linecap: Line endings ("butt", "round", "square")stroke_linejoin: Line joins ("miter", "round", "bevel")stroke_dasharray: Dash pattern (e.g., "5,5")
Complete Example
from krita_lib import (
KritaDocument, TextStyle, ShapeStyle,
ShapeLayer, Rectangle, Circle, Path, ShapeGroup
)
# Create document
doc = KritaDocument(width=1280, height=1024)
# Add styled text
text_style = TextStyle(
font_family="Arial",
font_size=24,
fill_color="#000000",
stroke_color="#FFFFFF",
stroke_width=1
)
text_layer = ShapeLayer.from_text(
text="Hello Krita!\nMultiline Text",
name="Title",
x=100,
y=100,
style=text_style
)
doc.add_text_layer(text_layer)
# Add shapes
shape_style = ShapeStyle(
fill="#FF0000",
stroke="#000000",
stroke_width=2
)
shapes = [
Rectangle(x=80, y=80, width=300, height=150, rx=10, style=shape_style),
Circle(cx=230, cy=155, r=100, style=shape_style),
Path(
d="M 100 150 Q 130 140, 160 150 Q 190 160, 220 150",
style=ShapeStyle(fill="none", stroke="#0000FF", stroke_width=2)
)
]
doc.add_shape_layer(ShapeGroup(shapes), name="Decorative Shapes")
# Add background image
doc.add_image_layer("background.jpg", name="Background")
# Save the document
doc.save("output.kra")
Best Practices
- Create styles separately from layers for better code organization
- Group related shapes using ShapeGroup
- Consider layer order - earlier layers appear behind later ones
- Use meaningful layer names
- Clean up resources by closing the document after saving
Error Handling
The library throws standard Python exceptions:
TypeError: Invalid parameter typesValueError: Invalid parameter valuesFileNotFoundError: Missing image filesOSError: File system related errors
Limitations
- Text formatting is limited to single style per layer
- Some advanced Krita features not supported (filters, masks, etc.)
- Limited animation support
Contributing
Contributions are welcome! Please check our GitHub repository for guidelines.
Metadata
Release files for kritapy 0.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| kritapy-0.0.0.tar.gz | 16.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kritapy-0.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.9 kB
Release files / kritapy-0.0.0.tar.gz
| Download URL | kritapy-0.0.0.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71d5194025101ca7963ed0d015792f8192ebf8eb5aad19eb26ed8d90095ffaeb
|
|
BLAKE2b-256 checksum How to use checksums |
be3dffa412c7b8e4ecf7426d65c7fb5163d86e6ab3a6dcbe0f88d8b8a23f4fc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.7
|
Release files / kritapy-0.0.0-py3-none-any.whl
| Download URL | kritapy-0.0.0-py3-none-any.whl |
|---|---|
| Size | 17.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77ec2f274cb97d253cbbf3edec43a1d39535c054c17e848083290f16952b5237
|
|
BLAKE2b-256 checksum How to use checksums |
90831f7a8f9caa7b8f1d4d8f98213248a3b633c59573b818286db01c3979d05e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.7
|
Security for kritapy 0.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.