File size: 1,941 Bytes
53f7a0c
4a672f4
0006475
ae6d72e
 
4a672f4
62e7ddb
4a672f4
c8d1088
 
 
 
 
 
 
4a672f4
 
c8d1088
4a672f4
0006475
4a672f4
 
 
 
 
62e7ddb
 
 
4a672f4
0006475
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae6d72e
 
 
 
 
0006475
 
ae6d72e
0006475
ae6d72e
4a672f4
 
0006475
4a672f4
0006475
62e7ddb
797f638
f984e57
ae6d72e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from flask import Flask, request, jsonify, send_from_directory
import os
import requests
from PIL import Image
from io import BytesIO

app = Flask(__name__)

IMAGE_FOLDER = "images"
app.config["UPLOAD_FOLDER"] = IMAGE_FOLDER

@app.route("/images/<filename>")
def get_image(filename):
    return send_from_directory(app.config["UPLOAD_FOLDER"], filename)

# Create folders to store uploaded images
UPLOAD_FOLDER = "uploads"
IMAGE_FOLDER = os.path.join(UPLOAD_FOLDER, "images")

for folder in [UPLOAD_FOLDER, IMAGE_FOLDER]:
    os.makedirs(folder, exist_ok=True)

# Create a dictionary to store available images
available_images = {}

@app.route("/upload", methods=["POST"])
def upload_image():
    url = request.form.get("url")

    if not url:
        return jsonify({"message": "URL parameter is missing"}), 400

    # Check if the URL is valid and get the image content
    try:
        response = requests.get(url)
        response.raise_for_status()
    except requests.exceptions.RequestException as e:
        return jsonify({"message": f"Error fetching image from URL: {str(e)}"}), 400

    # Check if the response content is an image
    content_type = response.headers.get('content-type')
    if 'image' not in content_type:
        return jsonify({"message": "The provided URL does not lead to an image"}), 400

    # Open the image using PIL
    try:
        img = Image.open(BytesIO(response.content))
    except Exception as e:
        return jsonify({"message": f"Error processing image: {str(e)}"}), 400

    # Save the image
    filename = os.path.basename(url)
    image_path = os.path.join(IMAGE_FOLDER, filename)
    img.save(image_path)

    # Update available images dictionary
    available_images[filename] = {"url": url, "name": filename}

    return jsonify({"message": "File uploaded successfully", "image_url": f"/images/{filename}"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860, debug=True)