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.
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.
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
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"
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)
Bitte beachten Sie, dass TinyPNG anscheinend nur ** 500 ** Bilder pro Monat kostenlos hochladen kann.