Py.Cafe

lucas.montes/

dash-image-viewer

Visualizador de Imagem com Dash

DocsPricing
  • app.py
  • requirements.txt
app.py
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
import dash
from dash import html
import mysql.connector
from flask import Response, abort, request

# Configurações do MySQL (ajuste conforme seu ambiente)
db_config = {
    'host': '162.214.169.214',
    'user': 'mavi_lucas_montes',
    'password': 'mavi@2024',
    'database': 'mavi_Femsa'
}

# Cria a aplicação Dash e obtem o servidor Flask subjacente
app = dash.Dash(__name__)
server = app.server

@server.route('/getImage', methods=['GET'])
def get_image():
    image_id = request.args.get('id')
    if not image_id:
        abort(400, "Parâmetro 'id' ausente.")
    try:
        conn = mysql.connector.connect(**db_config)
        cursor = conn.cursor()
        # Supondo que a tabela 'imagem' possua uma coluna BLOB 'dados'
        # e uma coluna 'mime_type' que armazena o tipo MIME.
        query = "SELECT dados, mime_type FROM imagem WHERE cod_imagem = %s"
        cursor.execute(query, (image_id,))
        row = cursor.fetchone()
        if row is None:
            abort(404, "Imagem não encontrada.")
        blob_data, content_type = row
        # Define 'image/jpeg' como padrão, caso content_type não esteja definido.
        if not content_type:
            content_type = "image/jpeg"
        return Response(blob_data, mimetype=content_type)
    except mysql.connector.Error as err:
        abort(500, f"Erro no MySQL: {err}")
    finally:
        if cursor:
            cursor.close()
        if conn:
            conn.close()

# Layout básico do Dash para exibir a imagem retornada pelo endpoint
app.layout = html.Div([
    html.H1("Visualizador de Imagem via Dash"),
    # Exemplo: a imagem é carregada a partir do endpoint /getImage com um id fixo.
    html.Img(src="/getImage?id=7894900011517", style={'max-width': '100%', 'height': 'auto'})
])

if __name__ == '__main__':
    app.run_server(debug=True, use_reloader=False)