J'ai décidé d'optimiser l'image afin d'augmenter la vitesse d'affichage du site Web actuellement en fonctionnement, mais Il est difficile de cloner et de le faire avec jpgmini, et quand j'ai cherché si cela pouvait être fait côté serveur, le célèbre TinyPNG a dit ** Nous avons préparé l'API Web **, nous allons donc l'utiliser.
Je me demandais s'il y avait déjà un article sur qiita, mais cela semble peu probable, donc je vais le laisser comme mémo.
Lorsque vous accédez à la page [Developpers] de TinyPNG (https://tinypng.com/developers), il y a un champ pour entrer votre nom et votre adresse e-mail, alors entrez les données là-bas. Ensuite, vous recevrez un e-mail, alors suivez le lien pour obtenir la clé API.
En plus de ** l'API REST **, TinyPNG inclut ** Ruby **, ** php **, ** node.js **, ** python **, ** java **, **. Net ** Pour utiliser l'API dans la langue de J'ai un client. J'utilise Python, donc j'écrirai cet article en Python.
Pour Python, il existe un client appelé tinify
, alors installez-le.
pip install tinify
Ceci est la page d'explication de l'API. https://tinypng.com/developers/reference/python
Avec ce client, vous pouvez optimiser avec ** seulement 2 lignes **.
source = tinify.from_file("unoptimized.jpg ")
source.to_file("optimized.jpg ")
seulement ça. On a l'impression que ** Simple est le MEILLEUR **, ce qui est très agréable.
En passant, avant cela, il y a importation du client et enregistrement de la clé API.
import tinify
tinify.key = "Your API KEY"
A titre d'essai, j'ai écrit le code pour optimiser le fichier jpg
ou png
dans le répertoire courant ( py2.7
).
#!/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)
Veuillez noter que TinyPNG semble ne pouvoir télécharger que ** 500 ** images par mois gratuitement.