Verändern Bild Aufrechterhaltung von Seitenverhältnis UND die Herstellung hoch-und Querformat-Bilder genau die gleiche Größe?
Momentan benutze ich:
os.chdir(album.path)
images = glob.glob('*.*')
# thumbs size
size = 80,80
for image in images:
#create thumb
file, ext = os.path.splitext(image)
im = Image.open(os.path.join(album.path,image))
im.thumbnail(size, Image.ANTIALIAS)
thumb_path = os.path.join(album.path, 'thumbs', file + ".thumb" + ".jpeg")
im.save(thumb_path)
Obwohl dies funktioniert, habe ich am Ende mit verschiedenen Größen der Bilder (einige sind portrait-und einige sind Landschaft), aber ich will alle Bilder haben eine exakte Größe. Vielleicht eine sinnvolle beschneiden?
UPDATE:
Ich bin nicht dagegen, zuschneiden einen kleinen Teil des Bildes. Als ich sagte, vernünftig beschneiden meine ich so etwas wie diese algorythm:
if image is portrait:
make width 80px
crop the height (will be more than 80px)
else if image is landscape:
make height 80px
crop the width to 80px (will be more than 80px)
Lesen Sie die Bedienungsanleitungen. Die
Er könnte Ihnen die gleiche Größe, wenn er wollte, zu tun eine Passform, die pad würde sich die zusätzliche Fläche mit einer Konstanten Farbe. Erlauben würde, dass ein 4x3 oder 16x9 oder jeden Aspekt Bild zu passen, innerhalb einer gegebenen dimension 80x80
Leider gibt es keine standard-Weg, um zu definieren, "sinnvoll", für das Kupieren. Es klingt wie Sie wollen, immer stellen Sie ein Quadrat aus dem Bild, das heißt, Sie laufen Gefahr, schneiden die Teile, die Sie wirklich wollte, zu halten.
Ich bin damit einverstanden. Wenn Ihre Quell-Bildes geschieht mit einem sehr non-Quadrat-Aspekt Sie Gefahr, viel zu verlieren, das Bild. Ich denke, eine Passform Polsterung wird am besten. Siehe meine Antwort.
Danke für die Antworten Jungs, aber ich bevorzuge, um schneiden Sie die Bilder und verlieren einen Teil von Ihnen anstelle der Zugabe Polsterung. Siehe mein update oben.
thumnail
Methode ist bedeutete um die Erhaltung der Aspekt des Bildes. Offensichtlich kann man nicht beides haben, da nicht alle Bilder das gleiche Seitenverhältnis. Erwägen Sie die Verwendung resize
wenn Sie wollen, zu skalieren, ohne die Erhaltung der ratio.Er könnte Ihnen die gleiche Größe, wenn er wollte, zu tun eine Passform, die pad würde sich die zusätzliche Fläche mit einer Konstanten Farbe. Erlauben würde, dass ein 4x3 oder 16x9 oder jeden Aspekt Bild zu passen, innerhalb einer gegebenen dimension 80x80
Leider gibt es keine standard-Weg, um zu definieren, "sinnvoll", für das Kupieren. Es klingt wie Sie wollen, immer stellen Sie ein Quadrat aus dem Bild, das heißt, Sie laufen Gefahr, schneiden die Teile, die Sie wirklich wollte, zu halten.
Ich bin damit einverstanden. Wenn Ihre Quell-Bildes geschieht mit einem sehr non-Quadrat-Aspekt Sie Gefahr, viel zu verlieren, das Bild. Ich denke, eine Passform Polsterung wird am besten. Siehe meine Antwort.
Danke für die Antworten Jungs, aber ich bevorzuge, um schneiden Sie die Bilder und verlieren einen Teil von Ihnen anstelle der Zugabe Polsterung. Siehe mein update oben.
InformationsquelleAutor thyagx | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist mein nehmen auf tun, eine gepolsterte Passform, die für ein Bild:
Verwendet Sie zunächst die Miniatur-Betrieb bringen das Bild unten, um innerhalb Ihrer ursprünglichen Grenzen und die Erhaltung der Aspekt. Dann Pflanzen Sie es wieder aus, um tatsächlich füllen Sie die Größe Ihrer Grenze (da, es sei denn, das ursprüngliche Bild war quadratisch, es wird kleiner, jetzt), und wir finden den richtigen offset, um das Bild zu zentrieren. Das Bild ist versetzt zur Mitte, so dass Sie am Ende mit Polsterung schwarz aber kein Bild zuschneiden.
Es sei denn, Sie machen eine wirklich vernünftige denke mal bei einem richtigen center Ernte ohne Verlust möglich wichtige Bilddaten auf den Kanten, eine gepolsterte fit-Ansatz besser funktioniert.
Update
Hier ist eine version, die das tun, entweder center-oder crop-pad passen.
da ya go!
Perfekt, genau das was ich brauchte! Danke @jdi!
InformationsquelleAutor
Offensichtlich, würden Sie brauchen, zu beschneiden oder Auffüllen der Bilder. Sie konnte etwas tun, wie unten zu bekommen haben die maximale zentriert zuschneiden nach Seitenverhältnis der Vorschaubilder (ungetestet):
im = ImageOps.fit(im, size, Image.ANTIALIAS, (0.5, 0.5))
dass nicht die gleiche Sache.InformationsquelleAutor
Wenn Sie einfach thumbnails Sie müssen
crop
zuTrue
undupscale
zuTrue
immer füllen den Raum (die exakten gleichen Abmessungen).Ex: macht image_2 passt in image_1 Abmessungen:
InformationsquelleAutor