Spaces:
Sleeping
Sleeping
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) |