File size: 1,894 Bytes
c58df45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import io
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
from pymongo import MongoClient
import base64

# Asume que tienes una funci贸n para obtener la conexi贸n a MongoDB
from ..database.mongo_db import get_mongodb

def convert_svg_to_png(svg_string):
    """Convierte una cadena SVG a una imagen PNG."""
    drawing = svg2rlg(io.BytesIO(svg_string.encode('utf-8')))
    png_bio = io.BytesIO()
    renderPM.drawToFile(drawing, png_bio, fmt="PNG")
    return png_bio.getvalue()

def save_png_to_database(username, analysis_id, png_data):
    """Guarda la imagen PNG en la base de datos."""
    client = get_mongodb()
    db = client['aideatext_db']  # Aseg煤rate de usar el nombre correcto de tu base de datos
    collection = db['png_diagrams']

    png_base64 = base64.b64encode(png_data).decode('utf-8')

    document = {
        'username': username,
        'analysis_id': analysis_id,
        'png_data': png_base64
    }

    result = collection.insert_one(document)
    return result.inserted_id

def process_and_save_svg_diagrams(username, analysis_id, svg_diagrams):
    """Procesa una lista de diagramas SVG, los convierte a PNG y los guarda en la base de datos."""
    png_ids = []
    for svg in svg_diagrams:
        png_data = convert_svg_to_png(svg)
        png_id = save_png_to_database(username, analysis_id, png_data)
        png_ids.append(png_id)
    return png_ids

# Funci贸n para recuperar PNGs de la base de datos
def get_png_diagrams(username, analysis_id):
    """Recupera los diagramas PNG de la base de datos para un an谩lisis espec铆fico."""
    client = get_mongodb()
    db = client['aideatext_db']
    collection = db['png_diagrams']

    diagrams = collection.find({'username': username, 'analysis_id': analysis_id})
    return [base64.b64decode(doc['png_data']) for doc in diagrams]