image-inspector / app.py
rmayormartins's picture
Subindo arquivos17
b028553
import os
import time
import gradio as gr
from PIL import Image
import io
def image_inspector(uploaded_file):
file_size = os.path.getsize(uploaded_file.name)
if file_size < 1024:
readable_file_size = f"{file_size} bytes"
elif file_size < 1024**2:
readable_file_size = f"{file_size / 1024:.2f} KB"
else:
readable_file_size = f"{file_size / (1024**2):.2f} MB"
file_timestamp = time.ctime(os.path.getmtime(uploaded_file.name))
try:
with Image.open(uploaded_file.name) as image:
bit_depth = image.mode
num_channels = len(image.getbands())
bit_depth_info = f"{num_channels * 8}-bit" if bit_depth else 'Desconhecido'
details = {
"Formato": image.format or "Desconhecido",
"Modo": image.mode,
"Dimensões": image.size,
"Profundidade de Cor (Bit Depth)": bit_depth_info,
"DPI": image.info.get('dpi', 'Não disponível'),
"Tamanho do Arquivo": readable_file_size,
"Timestamp do Arquivo": file_timestamp,
"Tipo de Compressão": image.info.get('compression', 'Não disponível'),
"Bands": image.getbands()
}
except Exception as e:
return f"Ocorreu um erro ao processar a imagem: {e}"
formatted_details = "\n".join([f"{key}: {value}" for key, value in details.items()])
return formatted_details
iface = gr.Interface(
fn=image_inspector,
inputs=gr.File(label="Upload de Imagem"),
outputs="text",
title="Inspetor de Imagem",
description="Faça o upload de uma imagem (.jpg, .png, .bmp, etc.) e veja detalhes sobre ela."
)
#...
if __name__ == "__main__":
iface.launch()