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 :

Création d'une image carré sur fond blanc à partir d'une image portrait ou paysage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut Création d'une image carré sur fond blanc à partir d'une image portrait ou paysage
    Bonjour,

    Je galère depuis des heures sans trop rien comprendre, pourriez vous m'aider ?

    je souhaite récupérer des images portrait ou paysage et les faire rentrer dans un carré sur fond blanc

    j'arrive a créer une image blanche
    j'arrive a dimension l'image portrait ou paysage pour qu'elle rentre dans le carré blanc

    mais quand je copy l'une sur l'autre le fond devient noir :/

    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
    <?php
     
    print '<body style="background-color:#aaaaaa;"></body>';
     
    function image_carre($fichier_source,$fichier_destination,$largeur,$hauteur)
    {
     
     
    // On charge l'image originale
    $original = imagecreatefromstring(file_get_contents($fichier_source));
    $largeur_original = imagesx($original);
    $hauteur_original = imagesy($original);
     
     
    if($largeur_original > $hauteur_original) { 
    								print '<br>paysage';
    								$original = imagescale($original, $largeur);}
    else						{
    							print '<br>portrait '."($largeur_original/$hauteur_original)=".($largeur_original/$hauteur_original);
    							$original_nouvelle_largeur = ($largeur_original/$hauteur_original)*$largeur;
    							print '<br>nouvelle largeur = '.$original_nouvelle_largeur;
    							$original = imagescale($original, $original_nouvelle_largeur);
    							}
     
     
     
    // On crée une nouvelle image vide aux même dimensions, sur fond blanc
    $white = imagecreatetruecolor($largeur, $hauteur);
    $whitebg = imagecolorallocate($white, 255, 255, 255); // couleur de fond : blanc 255,255,255 ; noir 0,0,0 etc.
     
    imagefilledrectangle($white, 0, 0, $largeur, $hauteur, $whitebg);
    imagecopy($white, $original, 0, 0, -($largeur/2)+$original_nouvelle_largeur/2, 0, $largeur, $hauteur);
     
    $final = $white;
     
    @unlink($fichier_destination);
    imagewebp($final,$fichier_destination,70); // Generate webp image and save to location
     
    print '<br><img src="'.$fichier_destination.'" ></img>';
     
    imagedestroy($final);
    imagedestroy($original);
    //imagedestroy($white);
     
     
    }
     
     
     
    $format_a = array(
    //array("fichier"=>"cart_default","largeur"=>"125","hauteur"=>"125"),
    //array("fichier"=>"home_default","largeur"=>"250","hauteur"=>"250"),
    array("fichier"=>"large_default","largeur"=>"800","hauteur"=>"800"),
    //array("fichier"=>"medium_default","largeur"=>"452","hauteur"=>"452"),
    //array("fichier"=>"small_default","largeur"=>"98","hauteur"=>"98"),
     
    );
     
    foreach($format_a as $format)
    {
    //$fichier_source = "source.jpg";
    $fichier_source = "https://canadiantire.scene7.com/is/image/CanadianTire/0530180_1?defaultImage=image_na_EN&fmt=jpg&fit=constrain,1&wid=573&hei=499";
    $fichier_destination = $format['fichier'].'.jpg';	
    image_carre($fichier_source,$fichier_destination,$format['largeur'],$format['hauteur']);
    }	
     
     
    ?>

  2. #2
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Bonjour,

    Il me semble que tout ce genre de manip demande une déclaration en fonction de ton format d'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: image/png');
    DS7

  3. #3
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut
    non, moi dans mon cas j'enregistre l'image puis l'affiche et j'ai pas de probleme de ce coté la...

    juste que l'image principale une fois collé sur le fond blanc, transforme le fond blanc en fond noir :/

  4. #4
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Est-ce qu'avant de dire "non" : avais-tu au moins testé en ajoutant le "header" en question ?

    DS7

  5. #5
    Membre très actif Avatar de myz-rix
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 143
    Par défaut
    je viens d'essayer et ça se met en erreur, normal puisque comme je l'ai dit au dessus j'enregistre l'image et je l'affiche a partir du disque ce qui n'a rien a voir du tout.

    ci joint l'image que l'obtient avec le code posté en tout premier

    Nom : Capture d’écran_2020-11-28_13-38-45.png
Affichages : 115
Taille : 260,5 Ko

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    il y avait un soucis de calcul dans les valeurs que vous donniez à la fonction "imagecopy".*
    essayez comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	$original_nouvelle_largeur = floor($original_nouvelle_largeur);
    	$original_nouvelle_hauteur = floor($hauteur_original * $original_nouvelle_largeur / $largeur_original);
     
    	imagecopy(
    		  $white
    		, $original
    		, ($largeur / 2) - ($original_nouvelle_largeur / 2), 0
    		, 0, 0
    		, $original_nouvelle_largeur, $original_nouvelle_hauteur
    	);

Discussions similaires

  1. Poste type gallery, soucies images portrait et paysage
    Par Mr-Jay dans le forum WordPress
    Réponses: 2
    Dernier message: 16/08/2019, 15h57
  2. police blanche sur fond blanc sur pc
    Par Syra1 dans le forum Windows
    Réponses: 5
    Dernier message: 10/08/2017, 13h17
  3. windows 10 sur fond blanc : bug ?
    Par jced75 dans le forum Windows 10
    Réponses: 11
    Dernier message: 11/12/2016, 19h51
  4. Création d'une image d'un serveur NT4 sur HP PROLIAN
    Par digital prophecy dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 07/08/2007, 17h29
  5. Création d'un cercle plein blanc sur fond noir
    Par Rafoo dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 11/04/2006, 14h53

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