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