Optimiser automatiquement une image

Petit nouveau ! | 5 Messages

22 oct. 2012, 20:40

Bonjour à tous,

J'ai initialement posté ce message sur le forum du Site du Zero sans grand succès, c'est pourquoi je me tourne vers une communauté un peu plus spécialisée dans le domaine.

Je travaille actuellement sur un site (de veille visuelle) qui permet à ses utilisateurs d'uploader leurs images (leurs créations). J'ai voulu optimiser au maximum les performances en vue d'une adaptation mobile (et aussi parce que ça améliore toujours l’expérience utilisateur).
J'ai donc sauvegardé les images utilisées pour la présentation (logo, icone, etc) avec la fonction "Enregistrer pour le Web" de Photoshop qui permet de comparer à la volée le résultat en fonction du format et de différents paramètres. J'ai à chaque fois choisi le résultat me donnant la plus petite taille possible sans sacrifier la qualité. On peux ainsi arriver à des tailles (en octet) ridiculeusement petite.
Seulement, si j'ai le contrôle total de ces images, il n'en est pas de même pour celles que les utilisateurs uploaderont. Elles pourront autant être en jpg, png, tiff ou gif, comportant beaucoup d'aplat de couleur ou eaucoup de détails, avec transparence ou non, ... Bref, un joyeux bordel :) .

Je cherche donc une solution pour effectuer ce genre d'opération automatiquement (en PHP si possible) lors de l'upload, choisir le format et ses paramètres les plus adaptés afin de réduire au maximum la taille mémoire de l'image sans sacrifier la qualité.
Je me fiche de la charge serveur engendrée sachant que les uploads seront relativement rares.

Au de là de ça, même sur mes propres images a priori déjà optimisées lors de l'enregistrement sous Photoshop (ou Fireworks), l'outils PageSpeed de Goggle me dit que je pourrais encore les optimiser sans me dire exactement à quel niveau (il me propose juste de passer mes images dans des softs tels que OptiPNG, jpegOptim, etc). Certes ça permet de réduire de quelques octet seulement, mais j'aimerais bien savoir ce qu'il en est.

Vous me direz surement que je me casse la tête pour pas grand chose, que je pourrais déléguer le travail à une API ou optimisé moi même les images uploadées par les utilisateurs, mais ce sujet m'intéresse et me permet d'apprendre pas mal de choses. Et puis j'aime bien me prendre la tête :P .

ViPHP
ViPHP | 3607 Messages

23 oct. 2012, 12:38

Bonjour,

Concernant l'amélioration de tes images à la manière de photoshop via un script, je n'ai rien a apporté pour ma part.
En revanche concernant les dires de pagespeed, les scripts tels qu'optipng, jpegotpim ou encore smush.it (http://www.smushit.com/ysmush.it/) sont des outils qui permettent de diminuer la taille des images sans perte de qualité aucune (ces outils suppriment des informations « inutiles » présentes dans l'image.).
Tu seras donc gagnant à tout le coups (même si c'est pour quelques octets seulement).

Cordialement,

Petit nouveau ! | 5 Messages

23 oct. 2012, 16:12

Merci pour la réponse Jojolapine, même si je savais déjà ça :wink: .
Au de là de ça, même sur mes propres images a priori déjà optimisées lors de l'enregistrement sous Photoshop (ou Fireworks), l'outils PageSpeed de Goggle me dit que je pourrais encore les optimiser sans me dire exactement à quel niveau (il me propose juste de passer mes images dans des softs tels que OptiPNG, jpegOptim, etc). Certes ça permet de réduire de quelques octet seulement, mais j'aimerais bien savoir ce qu'il en est.
Ce qui m’intéresse là dedans, c'est de savoir ce que ces softs font réellement, qu'est-ce qu'ils enlèvent, si ils rééchantillone l'image, et globalement, toutes les opérations qu'ils font sur l'image.

J'ai passé une image dans punyPNG (utilitaire en ligne similaire à ce que me propose PageSpeed) puis j'ai comparé son code (dans notepad++) avec celui de l'original. Il y a bien quelques metadonnées supprimées mais le reste du code est totalement changé. Je me demande donc ce que fait punyPNG pour récupérer quelques octets.

D'autres infos, pistes ou solutions ?

Eléphanteau du PHP | 25 Messages

06 nov. 2012, 01:56

Hello,

Pourquoi ne pas utiliser les API fournis par PunyPNG ou Smush it pour optimiser les images qu' upload tes utilisateurs ?

quelques liens intéressants :

http://fr.slideshare.net/stoyan/image-o ... esentation

http://garmahis.com/tutorials/how-to-op ... s-for-web/

Pour moi c'est la meilleur solution qui s'offre à toi :)