¿Hay una manera obvia de hacer esto que me estoy perdiendo? Solo intento hacer miniaturas.
python
image
python-imaging-library
thumbnails
sabado lugar
fuente
fuente
Respuestas:
Definir un tamaño máximo. Luego, calcule una relación de cambio de tamaño tomando
min(maxwidth/width, maxheight/height)
.El tamaño adecuado es
oldsize*ratio
.Por supuesto, también hay un método de biblioteca para hacer esto: el método
Image.thumbnail
.A continuación se muestra un ejemplo (editado) de la documentación PIL .
fuente
s= img.size(); ratio = MAXWIDTH/s[0]; newimg = img.resize((s[0]*ratio, s[1]*ratio), Image.ANTIALIAS)
? (eso es para la división de coma flotante :))ANTIALIAS
ya no se prefiere para los usuarios de la popular horquilla Pillow de PIL. pillow.readthedocs.org/en/3.0.x/releasenotes/…thumbnail
solo funciona si la imagen resultante es más pequeña que la original. Por eso supongo que usarresize
es la mejor manera.Este script redimensionará una imagen (somepic.jpg) usando PIL (Python Imaging Library) a un ancho de 300 píxeles y una altura proporcional al nuevo ancho. Para ello, determina qué porcentaje de 300 píxeles es del ancho original (tamaño img. [0]) y luego multiplica la altura original (tamaño img. [1]) por ese porcentaje. Cambie "ancho de base" a cualquier otro número para cambiar el ancho predeterminado de sus imágenes.
fuente
sompic.jpg
. ¿Por qué pasó esto? Estoy usando Python 3.x.jpeg
, useimg.save('sompic.jpg', 'JPEG')
.PIL.Image.ANTIALIAS
opción pararesize
, debería serloPIL.Image.LANCZOS
, aunque ambos tienen1
valor, vea pillow.readthedocs.io/en/3.1.x/reference/…También recomiendo usar el método de miniaturas de PIL, porque elimina todas las molestias de la relación.
Sin embargo, una pista importante: reemplazar
con
de forma predeterminada, PIL utiliza el filtro Image.NEAREST para cambiar el tamaño, lo que resulta en un buen rendimiento, pero de baja calidad.
fuente
Image.thumbnail
.Con base en @tomvon, terminé de usar lo siguiente (elija su caso):
a) Cambiar el tamaño de la altura ( conozco el nuevo ancho, así que necesito la nueva altura )
b) Cambiar el tamaño del ancho ( conozco la nueva altura, así que necesito el nuevo ancho )
Entonces solo:
fuente
resize
llamada, está utilizandonew_width
tanto para altura como para ancho?PIL ya tiene la opción de recortar una imagen
fuente
fuente
Si está tratando de mantener la misma relación de aspecto, ¿no cambiaría el tamaño en algún porcentaje del tamaño original?
Por ejemplo, la mitad del tamaño original
fuente
Yo uso esta biblioteca:
fuente
Si no desea / no necesita abrir la imagen con Pillow, use esto:
fuente
Simplemente actualizando esta pregunta con un contenedor más moderno Esta biblioteca envuelve Pillow (un tenedor de PIL) https://pypi.org/project/python-resize-image/
Permitiéndole hacer algo como esto: -
Montones de más ejemplos en el enlace de arriba.
fuente
Estaba tratando de cambiar el tamaño de algunas imágenes para un video de presentación de diapositivas y debido a eso, no solo quería una dimensión máxima, sino un ancho máximo y una altura máxima (el tamaño del cuadro de video).
Y siempre existía la posibilidad de un video de retrato ...
El
Image.thumbnail
método era prometedor, pero no podía hacer que fuera una imagen más pequeña.Entonces, después de que no pude encontrar una manera obvia de hacer eso aquí (o en otros lugares), escribí esta función y la puse aquí para las siguientes:
fuente
Un método simple para mantener relaciones restringidas y pasar un ancho / alto máximo. No es el más bonito, pero hace el trabajo y es fácil de entender:
Aquí hay un script de Python que usa esta función para ejecutar el cambio de tamaño de la imagen por lotes.
fuente
Han actualizado la respuesta anterior por "tomvon"
fuente
Mi feo ejemplo.
Función obtener archivo como: "pic [0-9a-z]. [Extensión]", cambiar su tamaño a 120x120, mueve la sección al centro y guardar en "ico [0-9a-z]. [Extensión]", funciona con retrato y paisaje:
fuente
Cambié el tamaño de la imagen de tal manera y está funcionando muy bien
fuente
También agregaré una versión del cambio de tamaño que mantiene la relación de aspecto fija. En este caso, ajustará la altura para que coincida con el ancho de la nueva imagen, en función de la relación de aspecto inicial, asp_rat , que es flotante (!). Pero, para ajustar el ancho a la altura, solo necesita comentar una línea y descomentar la otra en el bucle else . Verás dónde.
No necesita los puntos y comas (;), los guardo solo para recordarme la sintaxis de los idiomas que uso con más frecuencia.
Y ya está hecho. Traté de documentarlo tanto como pude, por lo que está claro.
¡Espero que pueda ser útil para alguien por ahí!
fuente
Abre tu archivo de imagen
Utilice el método PIL Image.resize (tamaño, resample = 0) , donde sustituye (ancho, alto) de su imagen por el tamaño de 2 tuplas.
Esto mostrará su imagen en tamaño original:
Esto mostrará su imagen a la mitad del tamaño:
Esto mostrará su imagen a 1/3 del tamaño:
Esto mostrará su imagen a 1/4 del tamaño:
etcétera etcétera
fuente
display()
y dónde está ubicado?fuente
Puede cambiar el tamaño de la imagen por el siguiente código:
fuente