File size: 2,912 Bytes
157a73d
bfd5b9c
 
23db19f
e7f86f4
bc77853
a584bd9
 
 
157a73d
 
 
 
 
 
23db19f
 
 
 
157a73d
5f155f4
6c11ffb
7412af9
 
008767a
6c11ffb
008767a
7fd0618
e5e74f7
e7f86f4
 
045a9fb
7fd0618
 
 
 
 
 
 
 
 
 
 
 
 
 
157a73d
bc77853
 
 
 
a584bd9
7412af9
a584bd9
157a73d
 
 
 
 
a584bd9
bfd5b9c
 
157a73d
 
 
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
64
65
from flask import Flask, request, jsonify, url_for, send_from_directory
import os
from datetime import datetime
import logging
import base64
import traceback

app = Flask(__name__)

# Настройка папки для загрузки изображений
app.config['UPLOAD_FOLDER'] = 'static/images'

# Настройка логирования
logging.basicConfig(level=logging.DEBUG)

handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
app.logger.addHandler(handler)

# Главный маршрут, теперь принимающий POST-запросы
@app.route('/', methods=['POST'])
def process_image():
    data = request.json  # Получаем JSON из запроса
    if data and "image" in data:
        image_data_str = data["image"]
        try:
            # Преобразуем строку с двоичными данными в байты
            image_data_bytes = image_data_str.encode('utf-8').decode('unicode_escape').encode('latin1')

            # Кодируем байты в строку base64
            image_data_base64 = base64.b64encode(image_data_bytes).decode('utf-8')

            # Генерируем уникальное имя файла для сохранения изображения
            timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
            filename = f'image_{timestamp}.png'
            filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)

            # Сохраняем изображение в формате base64
            with open(filepath, 'wb') as f:
                f.write(base64.b64decode(image_data_base64))

            # Генерируем URL для доступа к изображению
            image_url = url_for('uploaded_file', filename=filename, _external=True)

            # Отправляем ответ с URL изображения
            return jsonify({"image_url": image_url})
        except Exception as e:
            # Выводим подробную информацию об ошибке
            error_info = traceback.format_exc()
            app.logger.error('An error occurred: %s', error_info)
            return jsonify({"error": "An error occurred while processing the image", "info": error_info}), 500
    else:
        return jsonify({"error": "No image data provided"}), 400

# Отдача статических файлов (изображений)
@app.route('/static/images/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    # Убедитесь, что папка для загрузки существует
    os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
    
    # Запуск Flask-приложения с включенным режимом отладки
    app.run(host='0.0.0.0', port=7860, debug=True)