[PYTHON] Image Optimize auf der Serverseite mithilfe der Web-API von TinyPNG

Überblick

Ich habe mich entschlossen, das Bild zu optimieren, um die Anzeigegeschwindigkeit der aktuell in Betrieb befindlichen Website zu erhöhen, aber Es ist umständlich, es mit jpgmini zu klonen und zu tun, und als ich nachforschte, ob es auf der Serverseite möglich ist, sagte der berühmte TinyPNG ** Wir haben die Web-API ** vorbereitet und werden sie daher verwenden.

Ich habe mich gefragt, ob es bereits einen Artikel über Qiita gibt, aber es scheint unwahrscheinlich, also werde ich ihn als Memo hinterlassen.

1. Holen Sie sich den API-Schlüssel

Wenn Sie zur Seite [Entwickler] von TinyPNG (https://tinypng.com/developers) gehen, gibt es ein Feld für Ihren Namen und Ihre E-Mail-Adresse. Geben Sie also die Daten dort ein. Dann erhalten Sie eine E-Mail. Folgen Sie also dem Link, um den API-Schlüssel zu erhalten.

2. Wählen Sie einen Kunden

Zusätzlich zu ** REST API ** enthält TinyPNG ** Ruby **, ** PHP **, ** Node.js **, ** Python **, ** Java **, **. Net ** So verwenden Sie die API in der Sprache von Ich habe einen Kunden. Ich benutze Python, also werde ich diesen Artikel in Python schreiben.

Für Python gibt es einen Client namens "tinify". Installieren Sie ihn also.

pip install tinify

Dies ist die API-Erklärungsseite. https://tinypng.com/developers/reference/python

3. Schreiben Sie Code

Mit diesem Client können Sie mit ** nur 2 Zeilen ** optimieren.

source = tinify.from_file("unoptimized.jpg ")
source.to_file("optimized.jpg ")

nur das. Es fühlt sich an wie ** Einfach ist das BESTE **, was sehr schön ist.

Zuvor erfolgt übrigens der Import des Clients und die Registrierung des API-Schlüssels.

import tinify
tinify.key = "Your API KEY"

3.1. Beispielcode

Als Test habe ich den Code geschrieben, um die Datei "jpg" oder "png" im aktuellen Verzeichnis ("py2.7") zu optimieren.

#!/usr/bin/env python
# coding: utf-8

import os
import sys
import tinify

TARGET_DIR = "."
tinify.key = "###################################"

def get_images():

    result = []
    files = os.listdir(".")

    for file in files:

        if file.endswith(".jpg ") or file.endswith(".png "):
                result.append(file)

    return result

def optimize(source, dest, target_dir):

    dest_path = os.path.join(target_dir, dest)

    if os.access(source, os.F_OK) != True:

        raise IOError("file not found: {}".format(source))

    optimizer = tinify.from_file(source)
    optimizer.to_file(dest_path)

    return


if __name__ == "__main__":

    images = get_images()

    # test optimize
    optimize(images[0], images[0], TARGET_DIR)

4. Vorsichtsmaßnahmen

Bitte beachten Sie, dass TinyPNG anscheinend nur ** 500 ** Bilder pro Monat kostenlos hochladen kann.

Recommended Posts

Image Optimize auf der Serverseite mithilfe der Web-API von TinyPNG
Hinweise zur Verwendung von matplotlib auf dem Server
Veröffentlichen Sie das aktuelle Verzeichnis auf dem Webserver
Zeichentipps mit matplotlib auf der Serverseite
Rufen Sie die Web-API mit Anfragen auf. Beispiel: Flickr
Lernen eines neuronalen Netzes mit Chainer - Erstellen eines Web-API-Servers
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Ich habe versucht, auf der WEB-Serverseite bei einer internen Python-Lernsitzung zu lernen
Test.py wird auf dem Webserver in Python3 nicht angezeigt.
Erstellen Sie mit hug einen Web-API-Server mit explosiver Geschwindigkeit
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der Twitter-API
Zeigen Sie den Inhalt der Warteschlange mithilfe der RabbitMQ Management-Web-API an
Versuchen Sie es mit der PeeringDB 2.0-API
Ich habe versucht, die COTOHA-API zu verwenden (es gibt auch Code auf GitHub).
Gegenmaßnahmen gegen Proxy bei Verwendung der WEB-API
Klicken Sie auf die Web-API in Python
Ich habe versucht, die checkio-API zu verwenden
Ermitteln Sie mit Selenium + PhantomJS + Python die Breite des Div auf der Serverseite
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
Starten Sie den Webserver im aktuellen Verzeichnis
Kategorieschätzung mit der Bilderkennungs-API von docomo
Versuchen Sie es mit dem Webanwendungsframework Flask
Versuchen Sie, die Kraken-API mit Python zu verwenden
Portweiterleitung eines Webservers mithilfe von iptables
Ich bin auf die Hatena Keyword API gestoßen
Tweet mit der Twitter-API in Python
Laden Sie mit Python Dateien im Web herunter
Erstellen Sie eine Anwendung mit der Spotify-API
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
Bildsegment mit Oxford_iiit_pet in Google Colab
Bildersammlung mit der benutzerdefinierten Such-API von Google
Fügen Sie dem Bild Linien und Text hinzu
Spielen Sie mit Dajare mithilfe der COTOHA-API
Zeichnen Sie benutzerdefinierte Ereignisse mit der Shotgun-API auf
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Holen Sie sich die Größe einer Bilddatei im Web (Python3, keine zusätzliche Bibliothek erforderlich)
Die Bildanalyse war mit den von Microsoft COCO bereitgestellten Daten und der API einfach