Bonjour,
Avec la version 2.8 il est devenue très facile d'ajouter des formats d'images, le tiff par exemple et depuis plusieurs versions il est possible d'afficher plusieurs tailles d'une même image. C'est en bricolant le code de Piwigo et les logs que je me suis rendu compte d'une incohérence lors de la génération des déclinaisons : la génération se fait depuis la version png ou jpg (suivant la valeur de $conf['tiff_representative_ext']) qui a été générée lors de l'upload et non avec le fichier d'origine.
Je m'explique.
L'idée lorsqu'on utilisent des formats tiff, eps est de garder une qualité maximum qui peut être re-enregistré à volonté sans perte d'informations (le jpg est un format dit destructeur). Si je prend le processus de Piwigo :
- j'upload une photo en tiff via le formulaire, les log m'annoncent :
[2016-04-13 12:02:19] [INFO] upload_file_pdf, $file_path = ././upload/2016/04/13/20160413120219-1b302159.tif, $representative_ext = [2016-04-13 12:02:19] [INFO] upload_file_tiff, $file_path = ././upload/2016/04/13/20160413120219-1b302159.tif, $representative_ext = [2016-04-13 12:02:19] [INFO] upload_file_video, $file_path = ././upload/2016/04/13/20160413120219-1b302159.tif, $representative_ext = png [2016-04-13 12:02:19] [INFO] Handling ././upload/2016/04/13/20160413120219-1b302159.tif got png [2016-04-13 12:02:19] [DEBUG] [i.php] /usr/bin/convert "/www/galleries/html/2.8/upload/2016/04/13/pwg_representative/20160413120219-1b302159.png" -filter Lanczos -resize 144x96! -strip -quality 95 -interlace line -sampling-factor 4:2:2 "/www/galleries/html/2.8/_data/i/upload/2016/04/13/pwg_representative/20160413120219-1b302159-th.png" 2>&1 [2016-04-13 12:02:20] [DEBUG] [i.php] src_path: '20160413120219-1b302159.png' derivative_path: '20160413120219-1b302159-th.png' o_size: '1220 817 996740' d_size: '144 96 13824' mem_usage: 0.40000000000000002220446049250313080847263336181640625 timing: array( 'load' => 10, 'rotate' => '', 'crop' => '', 'scale' => 0, 'sharpen' => '', 'watermark' => '', 'save' => 139, 'send' => 2, 'total' => 152, )
Jusque la tout vas bien. Je visite ma galerie et la page de la photo que je viens d'ajouter, les log me disent
[2016-04-13 12:03:54] [DEBUG] [i.php] /usr/bin/convert "/www/galleries/html/2.8/upload/2016/04/13/pwg_representative/20160413120219-1b302159.png" -filter Lanczos -resize 1008x675! -quality 95 -interlace line -sampling-factor 4:2:2 "/www/galleries/html/2.8/_data/i/upload/2016/04/13/pwg_representative/20160413120219-1b302159-la.png" 2>&1 [2016-04-13 12:03:55] [DEBUG] [i.php] src_path: '20160413120219-1b302159.png' derivative_path: '20160413120219-1b302159-la.png' o_size: '1220 817 996740' d_size: '1008 675 680400' mem_usage: 0.40000000000000002220446049250313080847263336181640625 timing: array( 'load' => 14, 'rotate' => '', 'crop' => '', 'scale' => 0, 'sharpen' => '', 'watermark' => '', 'save' => 628, 'send' => 0, 'total' => 643, )
Dans mon exemple j'ai laissé le format png et toute les déclinaisons seront générées en png. Maintenant je passe le format en jpg, par exemple pour conserver les tracés que je peux avoir créés avec photoshop.
Trace de log :
Upload
[2016-04-13 12:10:54] [INFO] upload_file_pdf, $file_path = ././upload/2016/04/13/20160413121054-1b302159.tif, $representative_ext = [2016-04-13 12:10:54] [INFO] upload_file_tiff, $file_path = ././upload/2016/04/13/20160413121054-1b302159.tif, $representative_ext = [2016-04-13 12:10:54] [INFO] upload_file_video, $file_path = ././upload/2016/04/13/20160413121054-1b302159.tif, $representative_ext = jpg [2016-04-13 12:10:54] [INFO] Handling ././upload/2016/04/13/20160413121054-1b302159.tif got jpg [2016-04-13 12:10:54] [DEBUG] [i.php] /usr/bin/convert "/www/galleries/html/2.8/upload/2016/04/13/pwg_representative/20160413121054-1b302159.jpg" -filter Lanczos -resize 144x96! -strip -quality 95 -interlace line -sampling-factor 4:2:2 "/www/galleries/html/2.8/_data/i/upload/2016/04/13/pwg_representative/20160413121054-1b302159-th.jpg" 2>&1 [2016-04-13 12:10:54] [DEBUG] [i.php] src_path: '20160413121054-1b302159.jpg' derivative_path: '20160413121054-1b302159-th.jpg' o_size: '1220 817 996740' d_size: '144 96 13824' mem_usage: 0.40000000000000002220446049250313080847263336181640625 timing: array( 'load' => 12, 'rotate' => '', 'crop' => '', 'scale' => 0, 'sharpen' => '', 'watermark' => '', 'save' => 127, 'send' => 0, 'total' => 139, )
Pendant la visite
[2016-04-13 12:12:22] [DEBUG] [i.php] /usr/bin/convert "/www/galleries/html/2.8/upload/2016/04/13/pwg_representative/20160413121054-1b302159.jpg" -filter Lanczos -resize 1008x675! -quality 95 -interlace line -sampling-factor 4:2:2 "/www/galleries/html/2.8/_data/i/upload/2016/04/13/pwg_representative/20160413121054-1b302159-la.jpg" 2>&1 [2016-04-13 12:12:22] [DEBUG] [i.php] src_path: '20160413121054-1b302159.jpg' derivative_path: '20160413121054-1b302159-la.jpg' o_size: '1220 817 996740' d_size: '1008 675 680400' mem_usage: 0.40000000000000002220446049250313080847263336181640625 timing: array( 'load' => 16, 'rotate' => '', 'crop' => '', 'scale' => 0, 'sharpen' => '', 'watermark' => '', 'save' => 301, 'send' => 0, 'total' => 317, )
Dans les logs on se rend compte que la génération de la déclinaison est faite depuis le premier jpg et non depuis le fichier tiff donc depuis une version déjà dégradée.
C'est dommage de ne pas pouvoir exploiter la pleine qualité d'une image pour générer les déclinaisons.