Spaces:
Sleeping
Sleeping
| from flask import Flask, send_file, request, Response, jsonify | |
| import os | |
| import base64 | |
| app = Flask(__name__) | |
| def home(): | |
| return "Image Proxy Service for Ghibli Generator" | |
| def proxy_image(): | |
| """ | |
| Proxies an image from a local file path | |
| Example usage: /proxy-image?path=/tmp/gradio/4f461b7833afb048edcda4fd8968db08aeb352e871a5445721d63b11f9f489c7/image.webp | |
| """ | |
| file_path = request.args.get('path') | |
| if not file_path: | |
| return "No path specified", 400 | |
| # Security check to prevent directory traversal attacks | |
| if '..' in file_path: | |
| return "Invalid path", 400 | |
| # Ensure path starts with a slash | |
| if not file_path.startswith('/'): | |
| file_path = '/' + file_path | |
| try: | |
| # Read the file | |
| with open(file_path, 'rb') as f: | |
| file_data = f.read() | |
| # Return the file | |
| return Response(file_data, mimetype='image/webp') | |
| except Exception as e: | |
| return f"Error accessing file: {str(e)}", 404 | |
| def proxy_image_base64(): | |
| """ | |
| Proxies an image from a local file path and returns it as base64 | |
| Example usage: /proxy-image-base64?path=/tmp/gradio/4f461b7833afb048edcda4fd8968db08aeb352e871a5445721d63b11f9f489c7/image.webp | |
| """ | |
| file_path = request.args.get('path') | |
| if not file_path: | |
| return jsonify({"error": "No path specified"}), 400 | |
| # Security check to prevent directory traversal attacks | |
| if '..' in file_path: | |
| return jsonify({"error": "Invalid path"}), 400 | |
| # Ensure path starts with a slash | |
| if not file_path.startswith('/'): | |
| file_path = '/' + file_path | |
| try: | |
| # Read the file | |
| with open(file_path, 'rb') as f: | |
| file_data = f.read() | |
| # Convert to base64 | |
| base64_data = base64.b64encode(file_data).decode('utf-8') | |
| # Return the base64 data | |
| return jsonify({"base64": base64_data, "mime_type": "image/webp"}) | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 404 | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=7860) |