Files
Tools/backend/tools/qrcode_gen.py
T
Nirodan 34c82f3dca Add 5 new tools: QR-Code, Markdown, Color Converter, JSON Formatter, Regex Tester
- backend/tools/qrcode_gen.py: POST /api/qrcode/generate, returns base64 PNG (qrcode[pil])
- backend/tools/markdown_tool.py: POST /api/markdown/render, extensions: tables/fenced_code/nl2br
- backend/tools/colorconverter.py: POST /api/color/convert, HEX/RGB/HSL via colorsys (no deps)
- backend/tools/jsonformatter.py: POST /api/json/format, returns formatted JSON with line/col errors
- backend/tools/regextester.py: POST /api/regex/test, flags i/m/s, returns matches with positions
- QrCodeTool.jsx: generate + download PNG button
- MarkdownTool.jsx: split editor/preview, debounce 500ms, white preview bg
- ColorConverterTool.jsx: color swatch preview, per-format copy buttons
- JsonFormatterTool.jsx: indent toggle 2/4, pre result box with copy
- RegexTesterTool.jsx: debounce 400ms, yellow match highlighting, flag checkboxes
- All blueprints registered in app.py; qrcode[pil] + markdown added to requirements.txt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:19:34 +02:00

36 lines
1.1 KiB
Python

from flask import Blueprint, request, jsonify
import qrcode
import io
import base64
from util.logger import logger
from auth.token import verify_token
qrcode_blueprint = Blueprint('qrcode_tool', __name__)
@qrcode_blueprint.route('/api/qrcode/generate', methods=['POST'])
def generate_qrcode():
user = verify_token()
if not user:
return jsonify({"message": "Nicht autorisiert"}), 401
try:
data = request.get_json(silent=True) or {}
text = data.get("text", "").strip()
if not text:
return jsonify({"message": "Text darf nicht leer sein"}), 400
qr = qrcode.QRCode(box_size=10, border=4)
qr.add_data(text)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
buffer = io.BytesIO()
img.save(buffer, format="PNG")
b64 = base64.b64encode(buffer.getvalue()).decode()
logger.info(f"QR-Code generiert von {user['username']}")
return jsonify({"image": f"data:image/png;base64,{b64}"})
except Exception as e:
logger.error(f"Fehler QR-Code: {e}")
return jsonify({"message": "Fehler beim Generieren"}), 500