JuanjoSG5
feat: imported the project to the org
7af9a4a
from PIL import Image, ImageDraw, ImageFont
import os
from typing import Optional, Tuple, Dict, Any
def parse_color(color_str):
if color_str.startswith('rgba('):
values = color_str[5:-1].split(',')
r = int(float(values[0]))
g = int(float(values[1]))
b = int(float(values[2]))
return (r, g, b)
elif color_str.startswith('rgb('):
values = color_str[4:-1].split(',')
r = int(float(values[0]))
g = int(float(values[1]))
b = int(float(values[2]))
return (r, g, b)
elif color_str.startswith('#'):
return color_str
else:
return color_str
def add_text_to_image_base64(image, text, x, y, font_size, color, centered=False):
"""
Adds centered text to an image and saves the result in the same folder.
If no output_name is provided, '_edited' is appended to the original filename.
If no color is provided, black is used by default.
Args:
image_path: Path to the original image.
text: Text to write on the image.
color: Optional RGB color of the text. Defaults to black.
output_name: Optional output filename (without extension).
Returns:
Dictionary with success status and info.
"""
if image is None:
return None
img = image.copy()
draw = ImageDraw.Draw(img)
try:
font = ImageFont.truetype("arial.ttf", font_size)
except:
try:
font = ImageFont.truetype("/System/Library/Fonts/Arial.ttf", font_size)
except:
font = ImageFont.load_default()
parsed_color = parse_color(color)
if centered:
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
x = (img.width - text_width) // 2
y = (img.height - text_height) // 2
draw.text((x, y), text, fill=parsed_color, font=font)
return img