IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Galerie] Script de redimensionnement d'images carrées


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut [Galerie] Script de redimensionnement d'images carrées
    Bonjour,

    Voici ci-dessous un script, qui redemissionne les images rectangulaires au format carré sans perte de pixels (croppage et redimensionnement)

    Ce script marche super bien!

    Cependant, j'aimerais adapter ce script pour redimensionner une image en fonction d'une hauteur et d'une largeur donner...

    Exemple :

    J'ai une image de 400px de largeur par 200px de hauteur.

    Et je veux qu'elle devienne 170px de largeur par 115px de hauteur...


    Donc comment modifier la fonction ci-dessous pour faire un redimenssionnement et ensuite un croppage de manière à avoir une miniature rectangulaire sans déformation de pixel?

    Un grand merci!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    function thumbnail($src, $dest='', $largeur) { 
     
    	ini_set('memory_limit','16M');
     
    	if(!$dest)
    		$dest = $src;
     
    	$infos_image=getimagesize($src);
    	$src_x = $infos_image[0]; // largeur de l'image
    	$src_y = $infos_image[1]; // hauteur de l'image 
     
     
    	$im_src=@imagecreatefromjpeg($src);
     
    	if(!$im_src)
    		$im_src=@imagecreatefrompng($src);
     
    	if(!$im_src)
    		$im_src=@imagecreatefromgif($src);	
     
     
    	if ($im_src=='') 
    		return array_push($_SESSION['warning'], WRONG_FILE_TYPE); 
     
    		//on determine un carré avec la plus petite largeur
    		if($src_x >= $src_y){
     
    			$dim=$src_y; 
    			$verticale='1';	
     
    		}elseif($src_x <= $src_y){
     
    			$dim=$src_x; 
    			$horizontale='1';
     
    		}else
    			$dim=$src_x;
     
    		//on determine le point de depart x,y
    		if($verticale == '1'){
     
    		 $point_x_ref=($src_x/2)-($dim/2);
    		 $point_y_ref='0';
     
    		}
     
    		if($horizontale == '1'){
     
    		 $point_x_ref='0';
    		 $point_y_ref=($src_y/2)-($dim/2);
     
    		}
     
    		$im_dest=imagecreatetruecolor($largeur, $largeur); 
     
    		imagecopyresampled($im_dest, $im_src, 0, 0, $point_x_ref, $point_y_ref, $largeur, $largeur, $dim, $dim); 
    		imagedestroy($im_src); 
    		imagejpeg($im_dest, $dest, 90); 
    		imagedestroy($im_dest); 	
     
    }

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    J'ai ça en stock :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    function ImageResize($pImage, $t_width, $t_height) 
    {
            $iCanvas = @ImageCreateTrueColor($t_width, $t_height);
            $s_width = ImageSX($pImage);
            $s_height = ImageSY($pImage);
            ImageCopyResampled($iCanvas, $pImage, 0, 0, 0, 0, $t_width, $t_height, $s_width, $s_height);
            return $iCanvas;
    }
     
    function Vignette($source, $destination, $x = 100, $y = 100) // réduction sans dénaturation de l'image
    {
    		$img = imagecreatefromstring(file_get_contents($source));
    		if(!$img) return false;
            $xx = ImageSX($img);
            $yy = ImageSY($img);
            if($xx / $yy > $x / $y)
            { // réduction sur X
                    $f = $y / $xx; 
                    $rX = $xx * $f;
                    $rY = $yy * $f;
            }
            else
            { // réduction sur Y
                    $f = $x / $yy; 
                    $rX = $xx * $f;
                    $rY = $yy * $f;        
            }
            imagejpeg(ImageResize($img, $rX, $rY), $destination);
    }
    Normalement, elle marche... Enfin si c'est bien ma dernière version, c'est un peu le bordel dans mes archives, et je crois me souvenir que ma 1erversion buggait. Fait signe si y'a un pb, je regarderais.

    Edit : Ah oui, j'ai oublié d'expliquer... Ce script est censé redimensionner l'image "à l'echelle" en fonction de ce qu'il est possible de faire tenir dans l'emplacement $x-$y que tu passes n parametre a la fonction vignette...

    Aussi ,si tu lui donne une image de 200*100 a faire tenir sur un carré de 100*100, l'image retournée devrait faire 100*50.

  3. #3
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Salut,

    C'est un bon début mais je cherche à faire légèrement différent.

    Je m'explique:

    J'ai une image de 425 x 320 pixels (image originale)

    J'aimerais la redimensionner sans écrasement d'image sous un format de :

    170 x 115 pixels

    L'idée serait donc de redimensionner en 170 x 128 pixels

    Et ensuite, de la cropper au centre ou à partir d'un coin en 170 x 115 pixels...

    Est-ce réalisable?

    Merci de ton aide!

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Citation Envoyé par Sayrus Voir le message
    J'ai une image de 425 x 320 pixels (image originale)

    J'aimerais la redimensionner sans écrasement d'image sous un format de :

    170 x 115 pixels

    L'idée serait donc de redimensionner en 226 x 170 pixels

    Et ensuite, de la cropper au centre ou à partir d'un coin en 170 x 115 pixels...
    Heuu non, je vois pas... Enfin pas avec ton exemple... Si je suppose que tu t'es emélé les pinceau, alors je comprend que tu veux faire un peu ce que je propose, sauf qu'au lieu que l'algo sorte une image de 100*50, il sorte une image de 200*100 et qu'on la découpe avec des marges équivalentes de chaque coté pour obtenir une image de 100*100 (donc on enleve 50px de chaque cotés)...

    C'est bien ça ?

  5. #5
    Membre éclairé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Par défaut
    Je me suis trompé dans mon exemple,

    Voici l'explication corrigée :

    J'ai une image de 425 x 320 pixels (image originale)

    J'aimerais la redimensionner sans écrasement d'image sous un format de :

    170 x 115 pixels

    L'idée serait donc de redimensionner en 170 x 128 pixels

    Et ensuite, de la cropper au centre ou à partir d'un coin en 170 x 115 pixels...

    Ainsi, je la recroppe de 13 pixels et mon image occupe bien toute la zone 170 x115.

    Le but n'est pas de compléter les pixels manquant par du blanc ou du noir ou tout autre couleur, mais bien remplir tout le cadre par l'image même si il faut recropper.


    Est-ce plus clair? Je sais c'est pas évidant a expliquer.

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    oui oui, c'est bien ce que j'avais compris malgré l'exemple, a l'endroit ou on découpe près...

    A froid, je dirais qu'il suffir de remplacer dans ce que je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if($xx / $yy > $x / $y)
     //par 
     if($xx / $yy <= $x / $y)
    Puis faire un découpage simple (imagecopy) à la taille que tu désires du résultat obtenu...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script de redimensionnement d'image à l'upload
    Par vaxi71 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/05/2016, 19h12
  2. Photoshop script pour redimensionner une image
    Par corenitec dans le forum Imagerie
    Réponses: 3
    Dernier message: 05/02/2012, 19h40
  3. Script qui redimensionne les images
    Par Laetitia7771 dans le forum Langage
    Réponses: 1
    Dernier message: 02/01/2012, 15h21
  4. Script de redimensionnement d'images.
    Par JeanJean75 dans le forum Langage
    Réponses: 9
    Dernier message: 09/02/2010, 19h11
  5. [Forum] Script upload + redimensionnement image jpg
    Par baleiney dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 03/07/2006, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo