[PYTHON] Optimisation d'image côté serveur à l'aide de l'API Web de TinyPNG

Aperçu

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.

1. Obtenez la clé API

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.

2. Choisissez un client

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

3. Ecrire le code

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"

3.1. Exemple de code

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)

4. Précautions

Veuillez noter que TinyPNG semble ne pouvoir télécharger que ** 500 ** images par mois gratuitement.

Recommended Posts

Optimisation d'image côté serveur à l'aide de l'API Web de TinyPNG
Remarques sur l'utilisation de matplotlib sur le serveur
Publier le répertoire actuel sur le serveur Web
Conseils de dessin avec matplotlib côté serveur
Accédez à l'API Web à l'aide de requêtes Exemple: Flickr
Apprendre un réseau neuronal à l'aide de Chainer
Exécuter une commande sur le serveur Web et afficher le résultat
J'ai essayé d'étudier côté serveur WEB lors d'une session d'étude Python en interne
Test.py n'est pas reflété sur le serveur Web dans Python3.
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API Twitter
Afficher le contenu de la file d'attente à l'aide de l'API Web de gestion RabbitMQ
Essayez d'utiliser l'API PeeringDB 2.0
J'ai essayé d'utiliser l'API COTOHA (il y a aussi du code sur GitHub)
Contre-mesures contre le proxy lors de l'utilisation de l'API WEB
Accédez à l'API Web en Python
J'ai essayé d'utiliser l'API checkio
Obtenez la largeur du div côté serveur avec Selenium + PhantomJS + Python
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Démarrez le serveur Web dans le répertoire actuel
Estimation de catégorie à l'aide de l'API de reconnaissance d'image de docomo
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser l'API Kraken avec Python
Redirection de port d'un serveur Web à l'aide d'iptables
Je suis tombé sur l'API Hatena Keyword
Tweet à l'aide de l'API Twitter en Python
Télécharger des fichiers sur le Web avec Python
Créer une application à l'aide de l'API Spotify
Configurons un serveur WEB avec Chromebook
Segment d'image utilisant Oxford_iiit_pet dans Google Colab
Collection d'images à l'aide de l'API Google Custom Search
Ajouter des lignes et du texte sur l'image
Jouez avec Dajare en utilisant l'API COTOHA
Enregistrez des événements personnalisés à l'aide de l'API Shotgun
J'ai essayé d'utiliser l'API BigQuery Storage
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
Obtenez la taille d'un fichier image sur le Web (Python3, aucune bibliothèque supplémentaire requise)
L'analyse d'image a été facile à l'aide des données et de l'API fournies par Microsoft COCO