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

Langage PHP Discussion :

générer miniaturepng a partir de jpg


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut générer miniaturepng a partir de jpg
    Bonjour a tous,

    J'ai un problème que je n'arrive pas a surmonter : Sur un site le client ajoute des photos en jpg et une miniature est généré mais elles n'ont pas toute les même dimensions et je suis obligé de leurs appliquer un fond coloré.
    J'aimerai pouvoir générer des png avec fonds transparents a partir d'image jpg es ce possible?

    Je vous copie le script qui génère les miniatures :

    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
    64
    65
    66
    67
    68
    69
    70
    if (isset($_FILES['userfile']) AND $_FILES['userfile']['error'] == 0)
    {
            // Testons si le fichier n'est pas trop gros
            if ($_FILES['userfile']['size'] <= 500000000)
            {
                    // Testons si l'extension est autorisée
                    $infosfichier = pathinfo($_FILES['userfile']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg','jpeg','JPG','JPEG');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
     
     
    						$nom_alea = uniqid(null,true);  
    						$nom = $nom_alea.'.jpg';
                            move_uploaded_file($_FILES['userfile']['tmp_name'], '../photos_biens/temp/' . $nom);
     
     
     
     
     
     
     
    $x_dst0 = 600; // Largeur de la miniature
    $y_dst0 = 400; // Hauteur de la miniature
     
    // Création de l'img de la miniature (fond noir)
    $im_dst0 = imagecreatetruecolor( $x_dst0, $y_dst0 );
    $background_color0 = imagecolorallocate($im_dst0, 255, 255, 255);
     
    // Récupération de l'image à "miniaturer"
    $im_src0 = imagecreatefromjpeg("../photos_biens/temp/$nom");
    $x_src0 = imagesx($im_src0);
    $y_src0 = imagesy($im_src0);
     
    // Ration Largeur/Hauteur
    $ratio_dst0 = $x_dst0 / $y_dst0;
    $ratio_src0 = $x_src0 / $y_src0;
     
    if($ratio_dst0 > $ratio_src0)
    	$coef0 = $y_src0 / $y_dst0;
    else
    	$coef0 = $x_src0 / $x_dst0;
     
    // Calcul de la taille de l'image d'origine dans la miniature
    $l_dst0 = $x_src0/$coef0; // largeur
    $h_dst0 = $y_src0/$coef0; // hauteur
     
    // Centrage de l'image réduite d'origine dans la miniature
    $dec_x0 = ( $x_dst0 - $l_dst0 ) / 2; // Décalage à droite
    $dec_y0 = ( $y_dst0 - $h_dst0 ) / 2; // Décalage en haut
     
    // On applique
    imagefill ( $im_dst0, 0, 0, $background_color0 );
    imagecopyresampled( $im_dst0, $im_src0, $dec_x0, $dec_y0, 0, 0, $l_dst0, $h_dst0, $x_src0, $y_src0);			
     
    			imagejpeg($im_dst0,"../photos_biens/$nom");	
     
     
    $connexion->exec("INSERT INTO photos VALUES('', '" . $id_bien . "', '" . $nom . "')");
     
    $photo_temp = '../photos_biens/temp/' . $nom ;
    unlink($photo_temp) ; 
     
     
                    echo "L'envoi a bien été effectué !";
     
                    }
            }
    }

    Merci de votre aide...

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    je comprend pas l'histoire de fond coloré, si une miniature est rectangle, affiche la en rectangle ^^'

    la taille de ton block contenant l'image en css ne change pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    Il faut bien créer une image vide en php et y insérer la miniature qui ne sont pas toujours de la même largeur ce qui créer des bandes de chaque coté.
    J'ai tellement bidouillé que je commence a être perdu la

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Il faut bien créer une image vide en php et y insérer la miniature qui ne sont pas toujours de la même largeur ce qui créer des bandes de chaque coté.
    bah créé la de la même largeur que l'image. Ou alors je loupe un truc hin, j'suis pas un pro des images php :p

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Par défaut
    justement les images ne sont pas de même largeur, comme je l'ai dis...

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    on s'est mal compris, tes miniatures ont bien une largeur et une hauteur max non?
    Si plus large que haute, alors sa largeur est la largeur max.
    Si plus haute que large, alors la hauteur est la hauteur max.
    En gardant les proportions bien sur.

    Bon ducoup a l'affichage y'a pas de soucis, peut importe la taille de la miniature tu la centres dans une div css de largeur max et hauteur max, comme ca tu pète pas ton affichage de page.

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/12/2005, 18h44
  2. [FLASH 8] Générer du flash à partir de xml
    Par Mimisator dans le forum Flash
    Réponses: 1
    Dernier message: 05/12/2005, 13h39
  3. Réponses: 3
    Dernier message: 02/12/2005, 13h23
  4. Réponses: 1
    Dernier message: 14/10/2005, 09h55
  5. [ImageMagick] Générer une image à partir de plusieurs images ?
    Par fichtre! dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 16/02/2005, 15h32

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