Changeset 106709 in spip-zone


Ignore:
Timestamp:
Oct 10, 2017, 9:52:09 AM (2 years ago)
Author:
kent1@…
Message:

Inclure inc/config lorsque l'on en a besoin

Lorsque l'on transforme un png en jpg car plus adéquat (opération très lourde car double compression etc...), on conserve le png quand même quitte à avoir double cache.

Ainsi au recalcul, alors que l'image ne doit pas être recréée normalement, on en dispose toujours.

On vérifie dans ce cas là si une version jpg existe, si oui, c'est celle ci à utiliser.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/smush_images/trunk/inc/smush_image.php

    r105655 r106709  
    6262 */
    6363function image_smush($im) {
    64         include_spip('inc/config');
    6564        $fonction = array('smush', array());
    6665        $image = _image_valeurs_trans($im, 'smush', false, $fonction);
     
    7675        // Et: indispensable pour preserver transparence!
    7776        if (file_exists($image['fichier']) && $creer) {
     77                include_spip('inc/config');
     78
    7879                $im = $image['fichier'];
    7980                $dest = $image['fichier_dest'];
     
    105106
    106107                if ($format == 'PNG') {
     108                        $dest_jpg = $file_size_jpg = false;
    107109                        /**
    108110                         * On est sur un PNG
     
    115117                        if (count($out_alpha) == 0) {
    116118                                $dest_jpg = $tmp.'.jpg';
     119                                /**
     120                                 * Conversion en jpg vers dest_jpg
     121                                 */
    117122                                exec($magick.'convert '.$im.' '.$dest_jpg);
    118123                                if (lire_config('jpegoptim_casse', 'oui') != 'oui') {
     
    132137                        }
    133138                        /**
    134                          * Conversion en PNG
     139                         * Optimisation du PNG
    135140                         */
    136141                        $nq = substr($im, 0, -4).'-nq8.png';
     
    144149                         */
    145150                        if (isset($dest_jpg) AND $dest_jpg && $file_size_jpg && file_exists($dest) && filesize($dest) > $file_size_jpg) {
    146                                 spip_unlink($dest);
     151                                /**
     152                                 * Si on garde dest_jpg, on ne supprime pas dest pour ne pas la recalculer plus tard
     153                                 */
    147154                                $im = $dest = $dest_jpg;
    148155                        } elseif (isset($dest_jpg) AND $dest_jpg && file_exists($dest_jpg)) {
     
    191198                if (!file_exists($dest) || (filesize($dest) > filesize($image_compare))) {
    192199                        spip_unlink($dest);
    193                         spip_log('Image de même taille - On retourne un vieux cache '.$image['fichier_dest'], 'images');
     200                        spip_log('Smush - Image de même taille - On retourne un vieux cache '.$image['fichier_dest'], 'images');
    194201                        @copy($image_compare, $dest);
    195202                }
    196203        } else {
    197                 spip_log('On retourne un vieux cache '.$image['fichier_dest'], 'images');
    198                 @copy($image['fichier'], $image['fichier_dest']);
    199                 return _image_ecrire_tag($image, array('src' => $image['fichier_dest']));
     204                /**
     205                 * Si c'est un png et que l'on a encore la dernière version optimisée (on ne doit donc pas créer)
     206                 * On vérifie que l'on n'a pas un jpg plus léger qui traine,
     207                 * si oui, on utilise le jpg
     208                 */
     209                if ($image['format_source'] == 'png' && file_exists(rtrim($image['fichier_dest'],'.png').'.jpg')) {
     210                        spip_log('Smush - On utilise un jpg ici à la place du jpg','images');
     211                        $src = rtrim($image['fichier_dest'],'.png').'.jpg';
     212                        $im = _image_ecrire_tag($image, array('src' => $src));
     213                }
     214                return $im;
    200215        }
    201216        return _image_ecrire_tag($image, array('src' => $dest));
Note: See TracChangeset for help on using the changeset viewer.