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)