Redimensionar imagen en Tcl/Tk (tkinter) sin utilizar PIL en IOTeca

Redimensionar imagen en Tcl/Tk (tkinter) sin utilizar PIL

Cuando se incorpora una imagen en una aplicación que utiliza Tcl/Tk y se necesita ajustar el tamaño de una imagen tenemos dos alternativas.

La primera es importar PIL (Python Imaging Library) u otro módulo. La segunda es utilizar los métodos provistos para PhotoImage.

Para aumentar las dimensiones de una imagen se utiliza el método zoom(escala_x, escala _y), zoom(escala).

Este método agranda el tamaño de la imagen a ( ancho * escala_x, altura * escala_y) píxeles, utilizando el remuestreo vecino más cercano. Si sólo se proporciona una escala, se utilza para ambas dimensiones.
Los valores de escala_x, escala _y, escala deben ser números enteros.

Para reducir las dimensiones de una imagen se utiliza el método subsample(escala_x, escala_y), subsample(escala).

Este método Reduce el tamaño de la imagen a ( ancho / escala_x, altura / escala_y) píxeles, utilizando el remuestreo del vecino más cercano. Si solo se próporciona una escala, se usa para ambas dimensiones.
Nuevamente, los valores de escala_x, escala _y, escala deben ser números enteros


import tkinter as tk
from tkinter import ttk

def boton_aumentar():
	etiqueta.config(image=imagen_zoom)
def boton_reducir():
	etiqueta.config(image=imagen_sub)
def boton_original():
	etiqueta.config(image=imagen)
	
ventana=tk.Tk()
ventana.title("Ajuste de imagen")
ventana.geometry("600x500")

imagen=tk.PhotoImage(file="Python.png")
#Aumenta las dimensiones de la imagen en un (2 * ancho_imagen)
imagen_zoom=imagen.zoom(2)
#Reduce las dimensiones de la imagen en un (ancho_imagen / 2)
imagen_sub=imagen.subsample(2)
etiqueta=ttk.Label(image=imagen)
etiqueta.place(x=130, y=20)

boton_zoom=ttk.Button(text="Aumentar(200%)", command=boton_aumentar)
boton_zoom.place(x=20, y=20, width=100)
boton_ori=ttk.Button(text="Original  (100%)", command=boton_original)
boton_ori.place(x=20, y=50, width=100)
boton_sub=ttk.Button(text="Reducir    (50%)", command=boton_reducir)
boton_sub.place(x=20, y=80, width=100)

ventana.mainloop()

Al presionar el botón Aumentar escala la imagen un 200% (2 * ancho_imagen), y la imagen se ve como sigue:


Al presionar el botón Original muestra la imagen al 100%:


Al presionar el botón Reducir escala la imagen un 50% (ancho_imagen / 2), y la imagen se muestra así:



Este y otros contenidos los podés aprender en el Curso de Python

Creado: 05/08/2020  

Publicidad

| Volver a Python |

Comentarios

Para poder comentar debés registrarte e ingresar al sitio.