0

cuando intento usar una imagen como icono de un boton carga mal pierde calidad la imagen y no se ve bien las imagenes que tengo son png y son transparentes y de buena calidad no creo que se vea mal por la misma imagen, puede ser la funcion que estoy usando para mostrar la imagen? estoy usando customtkinter

Así se ve es la aplicación se ve con mala calidad

Esta es la función que estoy usando para abrir las imagenes no se si hace que se vea mal en la forma que la estoy usando

from PIL import Image
import customtkinter as ctk

def leer_imagen(path, size):
    image = ctk.CTkImage(Image.open(path), size=size)
    return image

Y aquí ya estoy cargando las imagenes en los botones

    iconos = { 
        "Panel": utils_img.leer_imagen("./assets/images/panel.png", (22, 22)), 
        "Productos": utils_img.leer_imagen("./assets/images/productos.png", (22, 19)), 
        "Usuarios": utils_img.leer_imagen("./assets/images/usuarios.png", (22, 22)), 
        "Reportes": utils_img.leer_imagen("./assets/images/reportes.png", (22, 22)), 
        "Historial": utils_img.leer_imagen("./assets/images/historial.png", (22, 22))
    }

    buttons_info = [
        ("Panel", iconos["Panel"], self.btn_panel),
        ("Productos", iconos["Productos"], self.btn_productos),
        ("Usuarios", iconos["Usuarios"], self.btn_usuarios),
        ("Reportes", iconos["Reportes"], self.btn_reportes),
        ("Historial", iconos["Historial"], self.btn_historial)
    ]

    for text, image, button in buttons_info:
        self.config_boton_menu(button, text, image, ancho_menu, alto_menu)

Y este es el metodo config_boton_menu

def config_boton_menu(self, button, text, image, ancho_menu, alto_menu):
    button.configure(
        text=text, 
        anchor="w", 
        image=image, 
        font=("Century Gothic", 14, "bold"),
        fg_color="transparent", 
        hover_color="#343a40",
        border_width=0,
        corner_radius=0,
        width=ancho_menu,
        height=alto_menu
    )
    button.pack(side='top')

este es un ejemplo de la calidad de la imagen que estoy usando todas tienen las misma calidad la busque desde fontawesome

introducir la descripción de la imagen aquí

Si saben como puedo hacer para que los iconos se vea "nitidos" o con buena calidad como se en la imagen de ejemplo lo agradecería.

3
  • 1
    Entonces no es un error. Es normal que al renderizar imágenes de alta resolución en un lugar más pequeño se vean feas. Tal vez debas activar la interpolación linear y/o generar mipmaps. Desconozco si eso lo debes hacer con pillow o la librería de interfaz
    – Mateo
    Commented hace 13 horas
  • Por cierto, el código va como texto y también sería útil que muestres el método config_boton_menu
    – Mateo
    Commented hace 12 horas
  • Es algo normal que se vean feas si la imagen que coloque es muy grande y luego la intento colocar como icono? pensaba que era algun error con la funcion leer imagen ¿deberia entonces descargar la imagen con una resolución menor? Commented hace 11 horas

1 respuesta 1

0

El problema efectivamente es que la imagen es demasiado grande para el poco espacio que ocupa. Si miras el ejemplo de la librería, utiliza imágenes de 256x256 px y se ven bien.

Probé redimensionando tu imagen a 256x256 y se ve correctamente en el programa de prueba. Aunque para asegurarte, sugiero que redimensiones las imágenes a un múltiplo del área a cubrir.

Podes hacerlo así:

def leer_imagen(path, size):
    image = Image.open(path).convert("RGBA").resize(size, resample=Image.BILINEAR)
    ctkImage = ctk.CTkImage(image, size=size)
    return ctkImage

Tu Respuesta

By clicking “Publica tu respuesta”, you agree to our terms of service and acknowledge you have read our privacy policy.

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.