PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 06/07/2016 20:33:04

PPmarcel
Membre
Inscription : 21/06/2010
Messages : 225
Site Web

[RÉSOLU] Modifier la génération des miniatures

Bonjour,

Sur pluxml 5.4 j'avais mis les mains dans le moteur afin de modifier la génération des miniatures. Ce que je voulais était :

  • conserver les dimensions d'origine des images (laissant le navigateur s'en occuper)

  • recompresser les images à hauteur de 60%

  • transformer les jpegs en progressive (l'image s'affiche en basse qualité puis s'améliore pendant le chargement)


Pour cela j'avais commenté fonction copyresampled qui redimensionne l'image créés la minature dans makeThumb() :

        # Création de l'image
        $image_p = imagecreatetruecolor($width,$height);

        if($type == 1) { # gifs
            ...
        }
        elseif($type == 2) { # jpegs
            $image = imagecreatefromjpeg($filename);
            #imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
            #imagejpeg($image_p, $filename_out, $quality);
            imageinterlace($image, true); // create progressive JPGs
            imagejpeg($image, $filename_out, 60);
        }
        elseif($type == 3) { # png
           ...
        }

Or dans pluxml 5.5 il semblerait que l'utilisation de la fonction imagecopyresampled soit maintenant requis pour la génération des images.

Quelqu'un pourrait-il me donner un coup de main pour by-passer le redimensionnement et ajouter imageinterlace() là où ce serait le plus indiqué ?

Merci d'avance

Dernière modification par PPmarcel (15/07/2016 17:49:37)

Hors ligne

#2 13/07/2016 13:55:57

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 151
Site Web

Re : [RÉSOLU] Modifier la génération des miniatures

Bonjour

1. Pourquoi vouloir bypasser la génération des miniatures en modifiant le code. ça ne revient pas à utiliser la taille de l'image originale et donc choisir lors de l'upload: Redimensionner images = Taille originale et Créer miniatures = Pas de miniature

2. le taux de compression des jpeg est déjà à 60%. Il est définit dans la classe class.plx.medias.php au niveau de la variable de classe

	public $thumbQuality = 60; # qualité image

3. L'emplacement de imageinterlace me semble ok


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#3 15/07/2016 17:22:32

PPmarcel
Membre
Inscription : 21/06/2010
Messages : 225
Site Web

Re : [RÉSOLU] Modifier la génération des miniatures

Bonjour Stéphane,

Merci pour ta réponse. En fait je souhaite avoir quelque chose différent de ce que tu décris.

Je veux d'une part des "miniatures" réduites fortement en qualité mais sans redimensionnement pour les pages, et les images originales pour l'affichage en visionneuse (colorbox). A taille réelle les minatures présentent alors beaucoup d'artefacts. Mais leur dimension dans les articles étant restreintes en taille, le navigateur doit les afficher en plus petit et les artefacts ne sont plus visibles. Cela présente l'avantage d'avoir une bonne définition d'image sur les écrans rétina (1600x1600 au lieu d'un 800x800 par exemple). En revanche les images colorbox s'affichant en plein écran, je veux que la qualité soit bien meilleure.

Mon soucis c'est qu'on dirait que vers la fin de la fonction MakeThumb() on a un "if imagecopyresampled(options){ switch... return image}". On dirait que imagecopyresampled devient indispensable pour la génération des miniatures, alors que avant je pouvais le commenter (voir code 5.4 plus haut).

Autrement j'ai essayé de définir des miniatures de 3000x3000 par exemple, pensant que si l'image est plus petite on conservera la taille originale. Mais ça les agrandis finalement. smile

____________________________________________


EDIT: finalement j'ai fini par élaguer tout ce qui attrait au redimensionnement et j'ai créé un case qui va bien pour générer les types d'images qui me conviennent.

public static function makeThumb($src_image, $dest_image, $thumb_width = 48, $thumb_height = 48, $jpg_quality = 90) {

        if(!function_exists('imagecreatetruecolor')) return false;

        // Get dimensions of existing image
        $image = getimagesize($src_image);

        // Determine format from MIME-Type
        $image['format'] = strtolower(preg_replace('/^.*?\//', '', $image['mime']));

        switch( $image['format'] ) {
          case 'jpg':
          case 'jpeg':
              $image_data = imagecreatefromjpeg($src_image);
              imageinterlace($image_data, true); // create progressive JPGs
              imagejpeg($image_data, $dest_image, 60);
              break;
          case 'png':
              $image_data = imagecreatefrompng($src_image);
              imageinterlace($image_data, true);
              imagepng($image_data, $dest_image, 60);
              break;
          case 'gif':
              $image_data = imagecreatefromgif($src_image);
              imageinterlace($image_data, true);
              imagegif($image_data, $dest_image, 60);
          break;
          default:
              return false; // Unsupported format
          break;
        }

        return is_file($dest_image);
}

Dernière modification par PPmarcel (27/08/2016 09:27:47)

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés