Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 454c938728 | |||
| 7bde3ce551 | |||
| 7ad0538039 | |||
| 5aa802e960 | |||
| 7544e47ed3 | |||
| e5e4962050 |
29
app.py
29
app.py
@@ -1,6 +1,7 @@
|
||||
"""
|
||||
图片编辑器 - Image Editor
|
||||
图片编辑器 - Image Editor v1.2.3
|
||||
前端图片处理工具:合并、分割、挖孔填充、圆形切图、文字图片等
|
||||
v1.2.3: 执行操作后保持当前配置面板
|
||||
|
||||
端口: 19018
|
||||
"""
|
||||
@@ -9,30 +10,25 @@ from flask import Flask, render_template, jsonify, request, send_file
|
||||
from flask_cors import CORS
|
||||
from pathlib import Path
|
||||
import base64
|
||||
import io
|
||||
from datetime import datetime
|
||||
import uuid
|
||||
|
||||
app = Flask(__name__, static_folder='static', static_url_path='/static')
|
||||
CORS(app)
|
||||
|
||||
# 输出目录
|
||||
OUTPUT_DIR = Path(__file__).parent / 'outputs'
|
||||
OUTPUT_DIR.mkdir(exist_ok=True)
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
"""主页"""
|
||||
return render_template('index.html')
|
||||
|
||||
@app.route('/api/health')
|
||||
def health():
|
||||
"""健康检查"""
|
||||
return jsonify({'status': 'ok', 'time': datetime.now().isoformat()})
|
||||
return jsonify({'status': 'ok', 'version': '1.2.2', 'time': datetime.now().isoformat()})
|
||||
|
||||
@app.route('/api/save', methods=['POST'])
|
||||
def save_image():
|
||||
"""保存图片"""
|
||||
data = request.get_json()
|
||||
image_data = data.get('image', '')
|
||||
filename = data.get('filename', f'image_{uuid.uuid4().hex[:8]}.png')
|
||||
@@ -40,33 +36,23 @@ def save_image():
|
||||
if not image_data:
|
||||
return jsonify({'error': '无图片数据'}), 400
|
||||
|
||||
# 解析 base64
|
||||
if image_data.startswith('data:image'):
|
||||
image_data = image_data.split(',', 1)[1]
|
||||
|
||||
# 保存
|
||||
image_bytes = base64.b64decode(image_data)
|
||||
filepath = OUTPUT_DIR / filename
|
||||
filepath.write_bytes(image_bytes)
|
||||
filepath.write_bytes(base64.b64decode(image_data))
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'filename': filename,
|
||||
'path': str(filepath)
|
||||
})
|
||||
return jsonify({'success': True, 'filename': filename})
|
||||
|
||||
@app.route('/api/download/<filename>')
|
||||
def download_image(filename):
|
||||
"""下载图片"""
|
||||
filepath = OUTPUT_DIR / filename
|
||||
if not filepath.exists():
|
||||
return jsonify({'error': '文件不存在'}), 404
|
||||
|
||||
return send_file(filepath, as_attachment=True)
|
||||
|
||||
@app.route('/api/list')
|
||||
def list_images():
|
||||
"""列出已保存的图片"""
|
||||
images = []
|
||||
for f in OUTPUT_DIR.glob('*.png'):
|
||||
images.append({
|
||||
@@ -74,14 +60,13 @@ def list_images():
|
||||
'size': f.stat().st_size,
|
||||
'time': datetime.fromtimestamp(f.stat().st_mtime).strftime('%Y-%m-%d %H:%M:%S')
|
||||
})
|
||||
|
||||
return jsonify({'images': sorted(images, key=lambda x: x['time'], reverse=True)})
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("=" * 50)
|
||||
print("图片编辑器 - Image Editor")
|
||||
print("图片编辑器 - Image Editor v1.2.2")
|
||||
print("=" * 50)
|
||||
print("右侧面板始终显示,首页显示快捷入口")
|
||||
print(f"访问地址: http://localhost:19018")
|
||||
print("=" * 50)
|
||||
|
||||
app.run(host='0.0.0.0', port=19018, debug=True)
|
||||
BIN
outputs/edited_1776739175870.png
Normal file
BIN
outputs/edited_1776739175870.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 702 KiB |
BIN
outputs/edited_1776739272589.png
Normal file
BIN
outputs/edited_1776739272589.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
outputs/edited_1776739697628.png
Normal file
BIN
outputs/edited_1776739697628.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 684 KiB |
BIN
outputs/edited_1776739802945.png
Normal file
BIN
outputs/edited_1776739802945.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 796 KiB |
BIN
outputs/edited_1776739910151.png
Normal file
BIN
outputs/edited_1776739910151.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
BIN
outputs/edited_1776739994702.png
Normal file
BIN
outputs/edited_1776739994702.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
1607
templates/index.html
1607
templates/index.html
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user