Gibt es eine offensichtliche Möglichkeit, dies zu tun, die ich übersehe? Ich versuche nur, Miniaturansichten zu erstellen.
Antworten
Zu viele Anzeigen?Sie können PIL's kombinieren Image.thumbnail
con sys.maxsize
wenn die Größenbeschränkung nur für eine Dimension (Breite oder Höhe) gilt.
Wenn Sie zum Beispiel die Größe eines Bildes so ändern möchten, dass seine Höhe nicht mehr als 100 Pixel beträgt, während das Seitenverhältnis beibehalten wird, können Sie so vorgehen:
import sys
from PIL import Image
image.thumbnail([sys.maxsize, 100], Image.ANTIALIAS)
Bitte beachten Sie, dass Image.thumbnail
wird die Größe des Bildes an Ort und Stelle geändert, was sich von Image.resize
die stattdessen das verkleinerte Bild zurückgibt, ohne das Original zu verändern.
Ich aktualisiere diese Frage nur mit einer moderneren Umhüllung Diese Bibliothek wickelt Pillow (eine Abspaltung von PIL) https://pypi.org/project/python-resize-image/
Damit Sie so etwas tun können :-
from PIL import Image
from resizeimage import resizeimage
fd_img = open('test-image.jpeg', 'r')
img = Image.open(fd_img)
img = resizeimage.resize_width(img, 200)
img.save('test-image-width.jpeg', img.format)
fd_img.close()
Viele weitere Beispiele finden Sie unter dem obigen Link.
from PIL import Image
from resizeimage import resizeimage
def resize_file(in_file, out_file, size):
with open(in_file) as fd:
image = resizeimage.resize_thumbnail(Image.open(fd), size)
image.save(out_file)
image.close()
resize_file('foo.tif', 'foo_small.jpg', (256, 256))
Ich benutze diese Bibliothek:
pip install python-resize-image