import os
from flask import Flask, request, send_file
from io import BytesIO
from PIL import Image
from imageio import mimwrite
app = Flask(__name__)
HTML_CONTENT = """
GIF Generator
GIF Generator
"""
@app.route('/', methods=['GET'])
def index():
return HTML_CONTENT
@app.route('/upload', methods=['POST'])
def upload():
try:
files = request.files.getlist('images')
if not files:
return "No images uploaded", 400
images = []
for file in files:
if file:
try:
img = Image.open(BytesIO(file.read()))
images.append(img)
except Exception as e:
print(f"Error opening image: {e}")
return f"Error opening image: {e}", 500
if not images:
return "No valid images processed", 400
# Generate GIF using imageio
gif_bytes = BytesIO()
mimwrite(gif_bytes, [img for img in images], format='GIF', fps=10)
gif_bytes.seek(0)
return send_file(
gif_bytes,
mimetype='image/gif',
download_name='animated.gif'
)
except Exception as e:
print(f"Error during upload: {e}")
return f"Error: {e}", 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)), debug=True)