Archive for Informatique

PHP – Redimensionnement automatique d’images et qualité de résultat

// janvier 13th, 2011 // No Comments » // Informatique

Quand un client valide une charte graphique en PSD ou déjà maquettée en HTML, tout est beau. Normal, les photos ont été redimensionnées avec Photoshop.
Il arrive malheureusement très souvent que sur la version dynamique, le rendu n’est pas au rendez-vous. Le client râle parce-que ce n’est pas la qualité qu’il a précédemment validé.
Le classique, quoi.

Avant PHP_GD et sa deuxième version était adaptée et disponible en extension a PHP, le choix était vite fait. Aujourd’hui, les exigences évoluent, la bande passante permet plus de qualité, le web devient largement plus “Multimedia” qu’il y a 5 ans et les “a titre de comparaison” propose des qualités de redimensionnement impressionnantes (Facebook, Flickr …).
Bien évident que PHP_GD n’est plus a la hauteur en terme de qualité. Le rendu est pixelisé et pas besoin d’être un professionnel de la photo pour s’en rendre compte. Ceci même en ajoutant 100 au 3ème paramètre qualité de imagejpeg() :

Image Nenuphars générée par PHP GD

Image Nenuphars générée par PHP GD

Vous trouverez ici, l’image cobaye pour les tests suivants.

La solution du filtre avec imageconvolution()

La plupart des sites dynamiques où les thumbs sont pixelisés s’arrêtent a imagecopyresampled().
Certains malins passent au dessus de l’image généré un filtre obtenue avec une matrice qui atténue la pixelisation en le rendant légèrement flou. Du coup, le résultat n’est pas là.

De plus, cette technique utilise imageconvolution() qui n’est une fonction disponible que si le PHP utilisé a compilé avec GD. Ce qui peux être problematique.

Image Magick

Image Magick

Quand le client a un problème, on a un problème. Et c’est trop facile de se défiler en avançant que “PHP n’est pas Photoshop”, que c’est le maximum que PHP peux faire … Ce qui est aujourd’hui faux et c’est pas les preuves qui manquent.

Je me suis dit, en explorant tous les horizons avec PHP_GD, que la solution est forcément ailleurs. Es-ce qu’il existe une application de traitement d’image en ligne de commande. La réponse est “Oui” : Image Magick.

Comment l’installer sur un debian-like?
sudo apt-get install imagemagick

Voici comment on procède pour un redimensionnement avec Image Magick :
convert -resize 229×172 image_source.jpg image_resultat.jpg
229×172 étant votre taille d’image final. A calculer de manière a conserver les proportions, pour éviter toute déformation.

Image Nenuphars générée par Image Magick sans filtres

Image Nenuphars générée par Image Magick sans filtres

Vous pourrez déjà constater que le résultat est bien meilleur que PHP_GD. Mais ne vous arrêtez pas là, vous pourrez en regardant bien, constater que certains pixels persévérants se distinguent toujours trop, comparé a celui de Photoshop.
Pour lisser encore un peu plus l’image, nous allons appliquer le filtre ‘Cubic’ et un unsharp, sur le resize :
convert -resize 229×172 -filter cubic -unsharp 0×1 image_source.jpg image_resultat.jpg

Image Nenuphars générée par Image Magick avec filtre

Image Nenuphars générée par Image Magick avec filtre

Vous voyez ? Non ? Bon, la première photo, noter résultat de départ et la deuxième, notre résultat après l’amélioration :

Image Nenuphars générée par PHP GD

Image Nenuphars générée par PHP GD

Image Nenuphars générée par Image Magick avec filtre

Image Nenuphars générée par Image Magick avec filtre

Comme on dit, il n’y a pas photo. :)

Reste plus qu’a mettre la commande correcte dans un exec(), dans le code PHP et dynamiser les dimensions du paramètre -resize :

exec( “convert -resize “.$resWidth.”x”.$resHeight.” -filter cubic -unsharp 0×1 “.$imgSrc.” “.$imgRes );

Vous allez me dire : “Mais Image Magick c’est un logiciel a part a installer et on ne peux pas tous les jours installer sur certaines plates-formes, comme dans les mutualisé, par exemple. Et d’ailleurs certains serveur n’acceptent pas la fonction exec()”. Oui, mais chez un hébergeur qui se respecte se doit d’activer la fonction exec() qui me semble quand même bien pratique dans certains cas, mais bien sûr pour un développeur responsable. Quand a Image Magick, détrompez-vous, il est installé dans la plupart des mutualisés. Pour le cas pour OVH, par exemple, vous lancez /usr/bin/convert.

Donc pour résumer, les avantages :

  • Qualité meilleure
  • Gain en poids, 38 Ko contre 46 Ko
  • Conservation de la transparence dans le cas d’un PNG24 doté de transparence (suffit d’ajouter -background transparent) ce qui n’est même pas possible avec PHP_GD.

Et les inconvénients :

  • Vous devez exécuter la commande dans un exec(),  donc bien vérifier les paramètres. Bien qu’il existe une extension PECL,  imagick, si votre serveur n’accepte pas les exec().
  • L’exécution est un chouïa plus lente que PHP_GD

Une fois votre image redimensionnée, il ne vous reste plus qu’a le croper, mais ça, vous conviendrez que ça mérite un autre billet …

Applications IPhone incontournables pour un administrateur ou webmaster

// octobre 27th, 2010 // 1 Comment » // Informatique

Entant qu’administrateur réseau, infogérant d’un serveur Linux ou Webmaster, et faisant partie des chanceux :p , ayant ce bijou qu’est l’IPhone, ce serait dommage de ne pas exploiter toutes les capacités d’un tel appareil.
Forcément, il arrive un jour ou on se dit, “tiens … et si je metais mon IPhone a profit de mon activité professionnelle ?”

Mais voilà, il y a 250 000 applications sur App Store (contre, pour info, 100 000 pour Android :p ), certains plus chers que d’autres. On parcours a fond la catégorie Business, mais on n’est quand même pas prêt a payer des applications pour un benchmark. Je vous épargne quelques sous de votre portefeuille en vous dirigeant vers les meilleurs :

Logo iSSH

iSSH

Si vous ne devez avoir qu’un seul, et bien c’est celui là, forcément. D’ailleurs, chapeau au développeur.
Vous ne trouverez pas plus complet en terme de client SSH, sur IPhone.

  • Plusieurs configurations permises (mais ce n’est pas exceptionnel, je vous l’accorde.)
  • Configurations complète (port, clef RSA ou DSA, encodage, tunnel …)
  • Ping préalable pour voir dès l’ouverture de l’appli quels sont les serveurs down.
  • Session simultanées en onglets
  • Fonctions clavier Ctrl, Alt, Esc et Tab (ce qui manque très souvent sur les applications SSH sur iPhone)
  • Up, Down, Right, Left et raccourcis
  • Copy, Paste
  • Connexion en SSH 2 et 1, mais aussi en RAW ou Telnet
  • Support du mode paysage
  • VNC (avec clavier virtuel, simulation souris même si l’utilisation est un peu fastidieuse )
  • Mises à jour régulières et nouveautés a chaque fois.

Connexions_List_iSSH Tabs_iSSH Copy_Paste_iSSH Up_Down_iSSH VNC_iSSH

En un seul mot, “Complet”. Et je ne vous dit pas combien c’est agréable d’avoir la main sur ses serveurs en arrêt dans un embouteillage, la main gauche tenant un café et l’autre exécutant apt-get upgrade.
Quasiment a acheter les yeux fermés.

(A suivre …)