PROJET AUTOBLOG


Warrior du Dimanche

Site original : Warrior du Dimanche

⇐ retour index

Optipic: une «api» pour optimiser les images

vendredi 2 décembre 2022 à 11:07

Le cadeau du jour: un script qui permet d'automatiser l'optimisation d'une image pour le ouaibe sans passer par une appli quelconque.

Le problème

Tout le monde est d'accord pour affirmer qu'il est indispensable de minimiser le poids des pages web et que dans cette optique, le premier geste - après avoir viré les bibliothèques inutiles bien entendu - reste l'optimisation des images.

J'avais vu passer un article fort bien écrit sur ce sujet mais hélas, j'ai omis de le bookmarker et paf: le voilà perdu dans les méandres de mon historique sur un des ordinateurs que j'utilise.

Tout le monde est d'accord sur le principe mais souvent, c'est comme l'écriture de la doc ou les tests unitaires: on a la flemme de s'y coller...

J'ai parfaitement conscience  de la déferlante de commentaires  que cette comparaison risque  de me valoir !

Ze solution

L'idéal serait bien sûr que l'optimisation soit transparente et automatique... genre: tu te contentes de passer à la balise img l'URL de l'API avec celle de l'image et POF, tu as l'image en version optimisée.

Comment ça   «t'es pas cap' ?»

Optipic est donc un script auquel on passe l'URL d'une image, le format souhaité, le niveau de qualité et -éventuellement - la largeur maximum pour obtenir en retour l'image transformée.

Les paramètres sont les suivants:

Le script renvoie directement l'image transformée avec le header adéquat et du coup, c'est transparent pour HTML/CSS.

Notez que l'image optimisée est sauvée dans le dossier rendered/ afin d'éviter une charge inutile: si une image a déjà été optimisée, le script la sert directement au lieu de la refaire à chaque fois.

But there's more !

Même si ce script est déjà à ce stade absolument fabuleux (si, si !), je me suis dit que les paramètres risquaient de se répéter et qu'il pouvait s'avérer fastidieux de retaper le tout à chaque fois. Par conséquent, j'ai ajouté la possibilité de créer des scripts d'optimisation - un peu comme dans scriptopic.

Ainsi, si vous placez un fichier PHP contenant les paramètres dans le dossier scripts/ , vous pouvez l'appeler via le paramètre $_GET script:

Exemple: je cree scripts/webp.php et je mets dedans:


// webp  50%
$params=[
    'format'        =>'webp',
    'quality'       =>50,
    'maxwidth'      =>null
];

Puis je l'appelle en faisant : api.url/?script=webp&i=http:/image.url/pic.jpg

Pour le moment, il y a quatre scripts: jpg80,jpg70,avif,webp... à vous de créer les vôtres en fonction de vos besoins...

Et ça marche ?

Ben j'ai fait un test dans ce blog pour voir avec mon image de titre LOL:

version originale

qui pèse 113 ko en jpg

Puis avec son optimisation via le script webp ci-dessus:

version optimisée

qui ne pèse plus que... 18 ko en webp 50%

Et ça juste en rajoutant https://api.warriordudimanche.net/optipic/?script=webp&i= dans le chemin de l'image.

la classe

En cas d'erreur ?

Si Optipic ne parvient pas à créer l'image, il crée une image d'erreur à la place, histoire de voir le souci quand même...

la classe

Ce comportement peut être débrayé avec la constante ERROR_PIC ligne 29.

Test, téléchargement pis tout ça

Comme pour toutes les api de ma page, le script est téléchargeable via le ?download : https://api.warriordudimanche.net/optipic/?download et testable au même endroit: https://api.warriordudimanche.net/optipic/?i=...

Nota bene

  1. Pensez bien à mettre le paramètre d'URL (i) en dernier car sinon, php inclura les paramètres dans l'URL passée
  2. Même avec un script vous pouvez toujours changer un paramètre. Exemple: ?script=webp&quality=30&i=xxx permet de changer la qualité précisée dans le script (50).
  3. Par défaut, le format de sortie est le jpeg mais c'est configurable dans la constante DEFAULT_FORMAT ligne 28

Au passage, ce script utilise une classe que j'avais codée pour scriptopic: pictools. Grâce à elle, le travail d'optimisation tient en


    $picture=new pictool($params);
    $picture->load($url);
    if (!empty($params['maxwidth'])){
        $picture->resize($params['maxwidth']);
    }
    $picture->save($generated_picture_path);
    $picture->display();

Cadeau !

Merci qui ?!
Qui a dit   jacky et michel ?!
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

Epson va arrêter de vendre les imprimantes laser trop énergivores - ZDNet

mercredi 30 novembre 2022 à 14:44

Réaction à chaud, donc incomplète.

Le fabricant d'imprimantes Epson a annoncé qu'il allait cesser de vendre et de distribuer des imprimantes laser en raison des problèmes de durabilité causés par le chauffage.

LOL: les imprimantes jet d'encre qui se foutent de la durabilité des imprimantes laser...
On parle bien des imprimantes jet d'encre dont le prix des cartouches rendent plus rentable de changer d'imprimante que d'en acheter de nouvelles ? Je me rends pas compte...

J'ai eu deux imprimantes laser en plus de 20 ans... :

  1. 🟢 C'est robuste, contrairement à ce que dit cet article.

  2. 🟢 C'est rapide

  3. 🟢 le rendu est très propre

  4. 🟢 le coût à la page est ridicule.

  5. 🟢 les cartouches durent longtemps

  6. 🔴 C'est plus cher à l'achat

  7. 🔴 c'est plus volumineux

  8. 🟠 les cartouches sont plus volumineuses mais elles permettent d'imprimer dix fois plus de pages... niveau pollution, ça doit être kifkif

« La technologie jet d'encre permet de réduire la consommation d'énergie par rapport au laser, et avec une empreinte compacte et une conception légère, ces produits contribuent à limiter les ressources utilisées pendant la production et l'expédition », a déclaré Epson. « Cette taille réduite signifie également qu'elles s'intègrent facilement au bureau et permettent de gagner de la place. Les cartouches d'encre à haut rendement réduisent également l'utilisation de matériaux, l'expédition, le stockage et la gestion de fin d'utilisation des consommables. »

Alors là, on est dans le marketing brut en mode «prends-moi bien pour un con» qui tend à chercher le moindre point positif où qu'il se cache.

Les cartouches de toner se trouvent pour une quarantaine d'euros et avec, t'es parti pour 3000 à 5000 pages tranquilou selon ta primante. Vas-y faire pareil avec des cartouches de jet d'encre qui contiennent un liquide vendu plus cher que du channel N°5 et avec lesquelles tu imprimeras péniblement quelques centaines de page.

Après, il y a les imprimantes à réservoir d'encre, que je ne connais pas du tout et au sujet desquelles je vais tout simplement fermer ma gueule vu que je n'en ai jamais eu une entre les pognes.

PS.

Sur le site d'EPSON, ils parlent de 14000 pages avec l'encre livrée dans le paquet de l'ecotank. Je suis sceptique sur l'argument de vente. Et le fait que ce soit Hussein Bolt, dont la compétence en la matière reste à confirmer, qui m'explique ne change rien à l'affaire.

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

Le Flohic (@DrGomi): la majorité des décès dans des accidents de voiture surviennent désormais chez… / Twitter

mercredi 30 novembre 2022 à 10:09

Allez, c'est pour moi, c'est cadeau :

Ce mocking meme a été réalisé avec https://mock.warriordudimanche.net : amusez-vous bien !

Via https://lehollandaisvolant.net/?mode=links
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

Lol du jour (qui rime avec troll)

mardi 29 novembre 2022 à 11:44
Aujourd'hui, à la fin du cours de  3ème, pendant que les élèves   sortaient de ma salle, je disais   que j'arrivais fatigué mais que   les voir et leur faire cours me  redonnait la patate...
Et là, une élève, d'un naturel   indolent, me sort:  «Ben moi c'est le contraire:  j'arrive en forme mais quand je  vois l'énergie que vous dépensez,  ça me crève !»
<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires

YoutubeRSS

samedi 26 novembre 2022 à 14:17

Hier, je me suis aperçu que le bookmarklet que j'avais fait pour trouver le flux RSS d'une chaîne youtube ne fonctionnait pas toujours 🤬: en effet, si l'URL de la chaîne n'est pas du type www.youtube.com/channel/xxxCHANNEL_IDxxx ça ne fonctionne pas... Or, les chaînes peuvent être aussi sous une forme dans laquelle le channel_id n'apparaît pas.

zut flûte et cacaboudin

Du coup, je m'y mets

Au lieu de laisser youtube me chier dans les bottes, je me suis dit que, si le channel_id n'est pas dans l'URL, il doit être planqué quelque part dans le html de la page.

En fouillant un peu, twingo bongo jannielongo bingo 🥳 J'ai trouvé ça en parsant avec (presque) la même regex que pour l'URL.

con.jpeg

J'ai donc codé vite fait une «api» qui renvoie l'URL du flux RSS d'une chaîne Youtube dont on fournit l'adresse.

On peut l'utiliser avec le frontend minimaliste prévu, en faisant une requête GET ou via le bookmarklet qui va bien.

Le tout est bien entendu utilisable, autohébergeable et modifiable, comme d'habitude

Allez !

<link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/style.css"/> <link rel="stylesheet" href="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.css"/> <script src="http://www.warriordudimanche.net/./plugins/Galart/assets/lightbox.js"> <script>[].forEach.call(document.querySelectorAll("[lightbox]"), function(el) { el.lightbox = new Lightbox(el);});

► Commentaires