gateway/testcode.py
2025-04-23 09:01:52 +02:00

66 lines
No EOL
2.9 KiB
Python

input_files = [['test_document.txt', 'CiAgICBUaGlzIGlzIGEgdGVzdCB0ZXh0IGZpbGUgZm9yIHRoZSBDaGF0TWFuYWdlciB3b3JrZmxvdy4KICAgIEl0IGNvbnRhaW5zIHNvbWUgaW5mb3JtYXRpb24gZm9yIHRlc3RpbmcgZG9jdW1lbnQgcHJvY2Vzc2luZy4KICAgIAogICAgVGhlIENoYXRNYW5hZ2VyIHNob3VsZCBiZSBhYmxlIHRvIHByb2Nlc3MgdGhpcyBmaWxlCiAgICBhbmQgZXh0cmFjdCByZWxldmFudCBpbmZvcm1hdGlvbiBmcm9tIGl0LgogICAgCiAgICBUaGlzIGZpbGUgc2VydmVzIGFzIGFuIGV4YW1wbGUgZm9yIHRleHQtYmFzZWQgZG9jdW1lbnRzIHRoYXQgY2FuIGJlCiAgICB1c2VkIGluIGEgY2hhdCB3b3JrZmxvdy4KICAgIA==', True], ['test_document.txt', '\n This is a test text file for the ChatManager workflow.\n It contains some information for testing document processing.\n \n The ChatManager should be able to process this file\n and extract relevant information from it.\n \n This file serves as an example for text-based documents that can be\n used in a chat workflow.\n ', False], ['test_image.png', 'iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAA40lEQVR4nO3QsQEAIAyAsOr/P+sLZU9mJs4btu66xKzCrMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArMCswKzArNn7il4Bx2GaB88AAAAASUVORK5CYII=', True], ['test_image.png', 'Image (100x100, PNG, RGB)', False]] # DO NOT CHANGE THIS LINE
# REQUIREMENTS: Pillow==10.0.0
import base64
from PIL import Image, ImageDraw, ImageFont
import io
# Initialize result dictionary
result = {}
# Helper function to decode base64 data
def decode_base64(data: str) -> bytes:
return base64.b64decode(data)
# Extract input files
text_data = None
image_data = None
for file_info in input_files:
filename, data, is_base64 = file_info
if filename == 'test_document.txt' and not is_base64:
text_data = data
elif filename == 'test_image.png' and is_base64:
image_data = decode_base64(data)
# Validate inputs
if text_data is None:
raise ValueError("Text data not found in input files.")
if image_data is None:
raise ValueError("Image data not found in input files.")
# Load image
image = Image.open(io.BytesIO(image_data))
# Prepare to draw on the image
draw = ImageDraw.Draw(image)
# Use a basic font
try:
font = ImageFont.truetype("arial", 15)
except IOError:
font = ImageFont.load_default()
# Define text position
text_position = (10, 10)
# Overlay text onto image
draw.text(text_position, text_data, font=font, fill=(255, 255, 255))
# Save the resulting image to a bytes buffer
output_buffer = io.BytesIO()
image.save(output_buffer, format='PNG')
output_buffer.seek(0)
#result['integrated_image.png'] = base64.b64encode(output_buffer.getvalue()).decode('utf-8')
# binary_data = base64.b64decode(pic_str)
binary_data=output_buffer.getvalue()
# Write the binary data to a file
with open("./static/test_output.png", "wb") as f:
f.write(binary_data)
print("OK")
# Output the result dictionary
result