Hola a todos!
Hace un tiempo publiqué un ejemplo para generar imágenes a partir de una descripción de texto utilizando GPT Image en Azure AI Foundry y mostrarlas posteriormente en Power Apps: GENERAR IMAGEN A PARTIR DE TEXTO CON GPT – IMAGE EN AZURE FOUNDRY Y MOSTRARLA EN POWER APPS.
En esta ocasión vamos a ampliar aquella solución.
Además de generar y mostrar la imagen, analizaremos la respuesta completa que devuelve el modelo para recuperar información adicional como el formato, la calidad, el tamaño y el número de tokens utilizados durante la generación.
Para construir el proceso utilizaremos Power Apps como interfaz, Power Automate como capa de integración y Azure AI Foundry para ejecutar el modelo de generación de imágenes.
El resultado será una aplicación desde la que podremos escribir una descripción, generar la imagen y mostrar tanto el resultado visual como sus principales metadatos.
Este es el flujo que vamos a utilizar. Os dejo debajo de cada imagen el código para que podáis copiar y pegar en vuestro proyecto.

@{triggerBody()?['text']}

{
"type": "object",
"properties": {
"created": {
"type": "integer"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"b64_json": {
"type": "string"
}
},
"required": [
"b64_json"
]
}
}
},
"required": [
"data"
]
}
imagen_@{formatDateTime(utcNow(), 'yyyyMMdd_HHmmss')}.png
@{base64ToBinary(first(body('Análisis_del_archivo_JSON')?['data'])?['b64_json'])}

first(body('Análisis_del_archivo_JSON')?['data'])?['b64_json']
body('Análisis_del_archivo_JSON')?['output_format']
body('Análisis_del_archivo_JSON')?['quality']
body('Análisis_del_archivo_JSON')?['size']
string(body('Análisis_del_archivo_JSON')?['usage']?['total_tokens'])
string(body('Análisis_del_archivo_JSON')?['usage']?['input_tokens'])
string(body('Análisis_del_archivo_JSON')?['usage']?['output_tokens'])
Una vez que tenemos el flujo, vamos a pasar esto a Power Apps.
En la app, en el botón de Generar imagen, vamos a escribir esto:

Set(
varResultadoImagen;
GENERARIMAGENGPT.Run(TextInput1.Text)
);;
Set(
varImgBase64;
varResultadoImagen.imgbase64
);;
Set(
varImg;
"data:image/png;base64," & varImgBase64
)
Y en los dos label justo de debajo de la imagen, vamos a incluir los metadatos:
"Formato:" & Char(9) & Upper(varResultadoImagen.formato) & Char(10) &
"Calidad:" & Char(9) & varResultadoImagen.calidad & Char(10) &
"Tamaño:" & Char(9) & varResultadoImagen.tamano & Char(10)
"Tokens totales:" & Char(9) & varResultadoImagen.tokenstotales & Char(10) &
"Tokens de entrada:" & Char(9) & varResultadoImagen.tokensentrada & Char(10) &
"Tokens de salida:" & Char(9) & varResultadoImagen.tokenssalida
Y además vamos a incluir un botón para limpiar los datos:
Set(varImg; Blank());;
Set(varImgBase64; Blank());;
Set(varResultadoImagen; Blank());;
Reset(TextInput1)
Ahora ya podemos conocer información sobre el tamaños de la imagen, la calidad y los tokens. Algo que siempre resulta muy útil cuando creamos nuestras apps.
