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

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] Comment faire des thumbaim ?


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut [ImageMagick] Comment faire des thumbaim ?
    Salut a tous,

    je voudrais savoir si vous savez comment faire des thumbmail en php.

    J'ai récupérer un script sur un site et j'ai essayé de le testé etape par etape mais ca ne marche pas je préfère tout reprendre depuis le debut de moi même.

    .

    Alors par quoi faut-il commenceR?

  2. #2
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Si sa peut t'inspirer

    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
    	public static function Copie_Redimensionne_Homothetique( $NewWidth , $NewHeight , $Path , $FileName , $NewName , $Couleur = NULL )
    	{
    		$Couleur = $Couleur === NULL ? new Couleur( 255 , 255 , 255 ) : $Couleur;
    		// Le fichier
    		$filename = $FileName;
    		list($width, $height) = getimagesize($Path.$FileName);
    		$destTop = 0;
    		$destLeft = 0;
     
    		//Calcul du pourcentage qui permet de faire rentrer l'image completement
    		$percW = ($NewWidth / $width)*100;
    		$percH = ($NewHeight / $height)*100;
     
    		$percent = $percW < $percH ? $percW : $percH;
     
    		// Calcul des nouvelles dimensions
    		$new_width = ($width * $percent)/100;
    		$new_height = ($height * $percent)/100;
     
    		//Calcul des valeurs de centrage de l'image
    		if( $new_height < $NewHeight )
    		{
    			$destTop = intval(($NewHeight-$new_height)/2);
    		}
    		if( $new_width < $NewWidth )
    		{
    			$destLeft = intval(($NewWidth-$new_width)/2);
    		}
     
    		// Redimensionnement
    		$image_p 		= imagecreatetruecolor( $NewWidth, $NewHeight );
    		$colourWhite 	= imagecolorallocate($image_p, $Couleur->Rouge , $Couleur->Vert , $Couleur->Bleu );
    		imagefill ( $image_p, 0, 0, $colourWhite );
    		$image 			= imagecreatefromjpeg($Path."/".$FileName);
    		imagecopyresampled($image_p, $image, $destLeft, $destTop, 0, 0, $new_width, $new_height, $width, $height);
     
    		// Affichage
    		imagejpeg($image_p, $Path."/".$NewName , 100);
    	}
    bye

  3. #3
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    merci mais je ne vois pas comment utiliser ta fonction.
    As tu un exemple?

  4. #4
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    c'est pas à utiliser tels quels c'est pour t'inspirer, elle est plutot mal foutu à mon gout et meriterait que j'y corrige certaine choses.

    Fin je m'en sert ainsi.

    Image::Copie_Redimensionne_Homothetique( 47 , 43 , "upload/" , $FileName , $Produit->Reference."_l.jpg" , NULL );

  5. #5
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    C'est bon j'ai trouvé comment ca marchais.

    Mais cela crée une image qui est ensuite stoqué dans le site.

    IJe crois qu'il existe un moyenne de créer l'image avec un fichier php (le fichierphp deviens l'image).

    C'est cette methode qui m'interesse car elle permet de ne pas surcharger l'espace consommé. (sinon les thumbmail j'aurai pu les faire avec photoshop ).

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Je crois qu'il existe un moyenne de créer l'image avec un fichier php (le fichierphp deviens l'image).
    Hmmm moi pas comprendre :s Un thumbail comme je l'entends, c'est une version réduite d'un fichier image existant.

    Si ce que tu veux faire c'est une thumbail à la volée, le code que je t'ai fournit te servira. il faudra par contre modifier la sortie standard. Présentement je l'enregistre sur le dur.
    Pour l'envoyer au navigateur il suffit de modifier cette ligne :
    // Affichage
    imagejpeg($image_p);

    (sinon les thumbmail j'aurai pu les faire avec photoshop ).
    Effectivement y'à aussi la méthode jme galère

  7. #7
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    oki, et comment je l'affiche l'image avec cette methode?

  8. #8
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    C'est bon j'ai trouvé.

    Juste un dernier truc. Il y a pas un moyen de modifier les proportion de l'image pourquelle prenne la taille désiré (sans rajouté de fond noir).

  9. #9
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Tu peux choisir la couleur du fond. Ou rendre l'ajout de matière transparent je croit.

    avec cette fonction imagecolortransparent surement.
    http://fr3.php.net/manual/fr/function.imagecolortransparent.php

  10. #10
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Citation Envoyé par ePoX
    Tu peux choisir la couleur du fond. Ou rendre l'ajout de matière transparent je croit.

    avec cette fonction imagecolortransparent surement.
    http://fr3.php.net/manual/fr/function.imagecolortransparent.php
    Non en fait c'est pas un probleme de fond, je force juste mes images a avoir les meme proportions pour "l'esthétiseme" étant doné qu'elle sont du meme ordre de proportions. Mais je veut éviter les petits ecarts qui serait voyant.

    Par contre il y a un autre probleme. Des que je déclare la fonction ca me renvoie ca en plus de l'image:
    ����&'()*456789:CDEFGHIJST
    UVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������
    Enfin le code de l'image.
    Sais tu comment faire en sorte que cela ne s'affiche pas?

  11. #11
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Non en fait c'est pas un probleme de fond, je force juste mes images a avoir les meme proportions pour "l'esthétiseme" étant doné qu'elle sont du meme ordre de proportions. Mais je veut éviter les petits ecarts qui serait voyant.
    Si le contenu estbien bord bord de l'image, le code ci dessous devrait les rendre de même taille, à peu près, en tenant compte de l'adaptabilité hauteur/largeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Calcul du pourcentage qui permet de faire rentrer l'image completement 
          $percW = ($NewWidth / $width)*100; 
          $percH = ($NewHeight / $height)*100; 
     
          $percent = $percW < $percH ? $percW : $percH; 
     
          // Calcul des nouvelles dimensions 
          $new_width = ($width * $percent)/100; 
          $new_height = ($height * $percent)/100;
    Sinon pour ton truc c'est un problème vraiment étrange. je vais faire quelques test pour voir.

  12. #12
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    C'est bon je me suis refait une petite fonction qui marche bien pour le dimensionnement.

    Mais j'ai toujours le code bizar qui s'affiche. En fait c'est le imagejpg qui le génère.

    Mais j'arrive pas a y remédier :/.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function thumbmail()
    	{
    	$filename='images/manga/alice_19thtome_1couvdos.jpg';
    	list($width, $height) = getimagesize($filename);
    	$newwidth = 94;
    	$newheight = 146;
    	$thumb = imagecreatetruecolor($newwidth, $newheight);
    	$image=imagecreatefromjpeg($filename);
    	imagecopyresized($thumb,$image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    	imagejpeg($thumb);
    	}
    	echo '<img src="'.thumbmail().'" >';

  13. #13
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Si je fait comme sa :
    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
    <?php
    function r(){
    $Path = "./img/";
    $NewWidth = 50;
    $NewHeight = 50;
     
                // Le fichier
                $FileName = "Collines.jpg";
                list($width, $height) = getimagesize($Path.$FileName);
                $destTop = 0;
                $destLeft = 0;
     
                //Calcul du pourcentage qui permet de faire rentrer l'image completement
                $percW = ($NewWidth / $width)*100;
                $percH = ($NewHeight / $height)*100;
     
                $percent = $percW < $percH ? $percW : $percH;
     
                // Calcul des nouvelles dimensions
                $new_width = ($width * $percent)/100;
                $new_height = ($height * $percent)/100;
     
                //Calcul des valeurs de centrage de l'image
                if( $new_height < $NewHeight )
                {
                $destTop = intval(($NewHeight-$new_height)/2);
                }
                if( $new_width < $NewWidth )
                {
                $destLeft = intval(($NewWidth-$new_width)/2);
                }
     
                // Redimensionnement
                $image_p       = imagecreatetruecolor( $NewWidth, $NewHeight );
                $colourWhite    = imagecolorallocate($image_p, 255 , 255 , 255 );
                imagefill ( $image_p, 0, 0, $colourWhite );
                $image          = imagecreatefromjpeg($Path."/".$FileName);
                imagecopyresampled($image_p, $image, $destLeft, $destTop, 0, 0, $new_width, $new_height, $width, $height);
     
                // Affichage
                imagejpeg($image_p);
    }
    ?>
    <img src="<?php r(); ?>" />
    j'ai un vieu bug effectivement.

    /ïŠ<ø¿¾+—ûfõ¤û_û_*UcþÑò:Ÿ>/ïŠ>Ñ÷Årßj9ûÔÆÅGÕXÿ´<Ž§Ï‹ûâŠå¾Øßß?}Q‡ö‡‘Çÿl²‚[hRoÛ!ÃݨöN•y«^É7-3>}[4Ãp¨>fñ¯«Xjg€©K«=BÄÿêîÕ½‹ëEÇŠâp]¿Ùæ¼¨ê ¿w-JºèÊAö¥õzWÔ¥F¡è2øÚpß»Eýªþ{ÃÕbýž?žk„ªÇ§ëO z5h¨Qì“Gkÿ שÿ¾ÿúÔWçïΊ~Æ—d.IÚÈÀõ©Äõ¯ áBø[þõûýÿ¥ÿ… áùÿÖ?ïô_ün¼ušQîþãèLùøH)Û«ßÿáCø_þõûýÿ¥ÿ…áùÿÖ?ïô_ün«ûV‡ŸÜOÕ&xÈEH%ϱ¯zÿ…áùÿÖ?ïô_ün—þW†?çÿWÿ¿Ññº¯í\?w÷ðS<ÍoZ+ÞáFxgþõûýÿ¢íl?w÷õ‡§QEó®QEQEQEÿÙ" />

    Par contre si je fait dans mon index.php :
    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
    <?php
    function r(){
    $Path = "./img/";
    $NewWidth = 50;
    $NewHeight = 50;
     
                // Le fichier
                $FileName = "Collines.jpg";
                list($width, $height) = getimagesize($Path.$FileName);
                $destTop = 0;
                $destLeft = 0;
     
                //Calcul du pourcentage qui permet de faire rentrer l'image completement
                $percW = ($NewWidth / $width)*100;
                $percH = ($NewHeight / $height)*100;
     
                $percent = $percW < $percH ? $percW : $percH;
     
                // Calcul des nouvelles dimensions
                $new_width = ($width * $percent)/100;
                $new_height = ($height * $percent)/100;
     
                //Calcul des valeurs de centrage de l'image
                if( $new_height < $NewHeight )
                {
                $destTop = intval(($NewHeight-$new_height)/2);
                }
                if( $new_width < $NewWidth )
                {
                $destLeft = intval(($NewWidth-$new_width)/2);
                }
     
                // Redimensionnement
                $image_p       = imagecreatetruecolor( $NewWidth, $NewHeight );
                $colourWhite    = imagecolorallocate($image_p, 255 , 255 , 255 );
                imagefill ( $image_p, 0, 0, $colourWhite );
                $image          = imagecreatefromjpeg($Path."/".$FileName);
                imagecopyresampled($image_p, $image, $destLeft, $destTop, 0, 0, $new_width, $new_height, $width, $height);
     
                // Affichage
                imagejpeg($image_p);
    }
    r();
    ?>
    Et dans un index2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="index.php" />
    sa fonctionne correctement.

  14. #14
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    oki il faut donc que je crée des image des GET en passant toutes les info apres un ?.

    Je vais essyer ca.

  15. #15
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    J'espere que c'est sa effectivement

  16. #16
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    C'est bon ca marche nickel.

    ET c'est tres efficace. Avec une qualité de 75% je divise par 10 la taille de chacune de mes images par rapport a avant ^^.

    Merci bien .

  17. #17
    Membre éprouvé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Par défaut
    Voila mon code pour ceux qu ca interesserait par la suite:

    page qui appelle l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $url='images/manga/alice_19thtome_1couvdos.jpg';
    $newwidth=94;
    $newheight=146;
    $qualite=75;
    echo '<img src="test.php?url='.$url.'&nw='.$newwidth.'&nh='.$newheight.'&qua='.$qualite.'" >';
    ?>
    Page qui crée l'image:
    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
    <?php
     
    	function thumbmail($filename,$newwidth,$newheight,$qualite)
    	{
    	list($width, $height) = getimagesize($filename);
    	$thumb = imagecreatetruecolor($newwidth, $newheight);
    	$image=imagecreatefromjpeg($filename);
    	imagecopyresampled($thumb,$image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    	imagejpeg($thumb,'',$qualite);
    	}
    	$url=$_GET['url'];
    	$nw=$_GET['nw'];
    	$nh=$_GET['nh'];
    	$qualite=$_GET['qua'];
    	thumbmail($url,$nw,$nh,$qualite);
     
       ?>
    Voila ^^.

  18. #18
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Manque plus qu'un petit résolu


  19. #19
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    N'oubliez pas qu'on a une page sources
    http://php.developpez.com/sources/?page=gd#gerimages

  20. #20
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    AAAhhh je l'ai cherché à un moment je ne la trouvé plus dans http://www.developpez.net/forums/viewtopic.php?t=222164 ta classe d'image

    Elle steack haché ! ok je

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. [Debutant] Comment faire des sous-packages
    Par benratti dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/02/2005, 13h46
  3. [SWT] Comment faire des fenetres internes ??????
    Par sebounator dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 22/04/2004, 01h12
  4. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  5. Réponses: 8
    Dernier message: 18/09/2002, 03h20

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