Python - Anti-Aliasing verkleinert Fotos wunderschön

Durch Anwenden von Anti-Aliasing wird das Ruckeln beim Reduzieren des Fotos verringert. Python-Code, der alle Fotodateien in einem Ordner unter Beibehaltung des Seitenverhältnisses (Seitenverhältnis) reduziert, Anti-Aliasing anwendet und speichert.

Vergleich mit / ohne Anti-Alias

Ich habe die Fotos von ungefähr 4000px auf 300px reduziert und sie verglichen. Im Vogelbild mit AA ist der kleine Sand auf dem Boden schwer zu erkennen, da die Farbe in den Boden integriert ist.

スクリーンショット 2015-11-19 21.03.02.png スクリーンショット 2015-11-19 21.03.06.png

Installation

#PIL-Installation
pip install PIL --allow-external PIL --allow-unverified PIL

Vergrößerungs- und Verkleinerungscode

Es wurde bestätigt, dass es nur in der Python2.7-Umgebung von Mac funktioniert

resize.py



# -*- coding: utf-8 -*-
import commands
import Image
import re

#Bildhöhenpixel beim Verkleinern
PHOTO_HEIGHT = 300

#Vollständiger Pfad des Ordners, der das Bild enthält
BASE_DIR = "/Users/XXXXX/Desktop/Photos"

#Name des Bildes für reguläre Ausdrücke
PHOTO_REGEX = r"P.*.[jpg|JPG]"

#Bildpräfix nach Größenänderung
PHOTO_RESIZE_PREFIX = "r_"


def main():
    #Holen Sie sich den vollständigen Bildpfad
    _cmd = "cd {} && ls".format(BASE_DIR)
    l = commands.getoutput(_cmd)
    l = l.split("\n")
    l = [_l for _l in l if re.match(PHOTO_REGEX, _l)]

    #Generieren Sie einen Ordner für die Ausgabe
    commands.getoutput("mkdir {}/output".format(BASE_DIR))

    #Vorhandene Datei im Lesemodus lesen
    for _l in l:
        before_path = '{}/{}'.format(BASE_DIR, _l)
        filename = '{}{}'.format(PHOTO_RESIZE_PREFIX, _l)
        after_path = '{}/output/{}'.format(BASE_DIR, filename)
        resize(before_path, after_path, filename=_l)  #Schrumpfen


def resize(before, after, height=PHOTO_HEIGHT, filename="", aa_enable=True):
    """
Bildgröße anpassen
    :param str before:Pfad der Originalbilddatei
    :param str after:Bilddateipfad nach Größenänderung
    :param int height:Bildhöhe nach Größenänderung
    :param bool aa_enable:Gibt an, ob Antialiasing aktiviert werden soll
    :return:
    """
    #Bild schreibgeschützt öffnen
    img = Image.open(before, 'r')
    #Berechnen Sie die Bildpixel nach der Größenänderung
    before_x, before_y = img.size[0], img.size[1]
    x = int(round(float(height / float(before_y) * float(before_x))))
    y = height
    resize_img = img
    if aa_enable:
        #Mit Antialiasing schrumpfen
        resize_img.thumbnail((x, y), Image.ANTIALIAS)
    else:
        #Schrumpfen ohne Antialiasing
        resize_img = resize_img.resize((x, y))

    #Speichern Sie das Bild nach der Größenänderung
    resize_img.save(after, 'jpeg', quality=100)
    print "RESIZED!:{}[{}x{}] --> {}x{}".format(filename, before_x, before_y, x, y)

#Lauf
main()

Ausführungsergebnis


>>> python resize.py
RESIZED!:P1040673.jpg[4592x3448] --> 400x300
RESIZED!:P1050388.JPG[4592x3448] --> 400x300
RESIZED!:P1050389.JPG[4592x3448] --> 400x300
RESIZED!:P1050390.JPG[4592x3448] --> 400x300
RESIZED!:P1050391.JPG[4592x3448] --> 400x300
RESIZED!:P1050392.JPG[4592x3448] --> 400x300
RESIZED!:P1050393.JPG[4592x3448] --> 400x300
RESIZED!:P1050394.JPG[4592x3448] --> 400x300

Recommended Posts

Python - Anti-Aliasing verkleinert Fotos wunderschön
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
Spielen Sie mit 2016-Python
Getestet mit Python
mit Syntax (Python)
Bingo mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
1.1 Erste Schritte mit Python
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Fahren Sie WebDriver mit Python
Verwenden Sie Mecab mit Python 3
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python
Primzahlbeurteilung mit Python
Führen Sie Blender mit Python aus
Löse Mathe mit Python
Python ab Windows 7
Heatmap von Python + matplotlib
Asynchron mit Python verarbeiten
Python-Programmierung mit Atom
Verwenden Sie Python 3.8 mit Anaconda
Wettbewerbsfähige Programmierung mit Python
Behandle Rabbimq mit Python
GRPC beginnend mit Python