Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1405 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Rassembler plusieurs image en une seule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rassembler plusieurs image en une seule

n°2460090
alkatraz57
Posté le 13-12-2023 à 14:19:27  profilanswer
 

Bonjour,
 
Je dois pour un exercice faire une fonction qui recherche des fichiers images (jpg png etc...) et qui les ajoutent à un nouveau fichier image, j'ai réussis mais j'aimerais automatiser le fait qu'elle se mette les unes après les autres, et pas les une sur les autres.
Pour l'instant voici ce que j'ai réussi à faire:  
 
<?php
 
function my_merge_image($img1, $img2)
{
    $corps = imagecreatetruecolor(2400, 1600);
    $img1 = imagecreatefrompng("img1.png" );
    $img2 = imagecreatefrompng("img2.png" );
    $X1 = imagesx($img1);
    $Y1 = imagesy($img1);
    $X2 = imagesx($img2);
    $Y2 = imagesy($img2);
    list($x1, $y1) = getimagesize('img1.png');
    list($x2, $y2) = getimagesize('img2.png');
    imagecopymerge($corps, $img1, 0, 0, 0, 0, $X1, $Y1, 100);
    imagecopymerge($corps, $img2, 1200, 0, 0, 0, $X2, $Y2, 100);
    imagepng($corps, "image.png" );
    return;
}
 
my_merge_image("img1.png", "img2.png" );
 
Donc j'ai précisé les emplacements en indiquant 1200 pour l'axe x de la deuxième photo ce qui fait qu'elle commence à 1200 pixels du bord gauche et comme les deux images font 1200x800 ça entre parfaitement car j'ai défini mon corps à 2400x1600 soit le double, mais je dois ajouter ou modifier quelque chose pour que ça se place directement à la suite des autres et ce peu importe la taille de l'image. Elle ne doivent pas empiéter les unes sur les autres.
 
Ce n'est que la première étape de l'exercice que je dois rendre dans 2 semaines et je suis bloqué depuis ce matin.
 
Cordialement.
 

mood
Publicité
Posté le 13-12-2023 à 14:19:27  profilanswer
 

n°2460091
antac
..
Posté le 13-12-2023 à 14:31:43  profilanswer
 

Ben tu as mis en dur "1200", il faut que tu récupères la largeur de l'image avant par programmation et que tu enregistres une sorte de compteur que tu incrémentes à chaque fois qu'une image est ajoutée pour gérer ton offset.

n°2460097
alkatraz57
Posté le 13-12-2023 à 15:49:17  profilanswer
 

antac a écrit :

Ben tu as mis en dur "1200", il faut que tu récupères la largeur de l'image avant par programmation et que tu enregistres une sorte de compteur que tu incrémentes à chaque fois qu'une image est ajoutée pour gérer ton offset.


 
J'essaye j'essaye,  
 
<?php
 
function my_merge_image($img1, $img2)
{
    $infosimg1 = list($x1, $y1) = getimagesize('img1.png');
    $infosimg2 = list($x2, $y2) = getimagesize('img2.png');
    print_r ($infosimg1);
    print_r ($infosimg2);
    $size1 = $infosimg1 [3];
    $size2 = $infosimg2 [3];
    echo $size1 . PHP_EOL;
    echo $size2 . PHP_EOL;
    $valuesize1 = explode (" ", $size1);
    $x1 = $valuesize1 [0];
    $y1 = $valuesize1 [1];
    $valuesize2 = explode (" ", $size2);
    $x2 = $valuesize2 [0];
    $y2 = $valuesize2 [1];
    echo $x1 . PHP_EOL;
    echo $y2 . PHP_EOL;
    echo $x2 . PHP_EOL;
    echo $y2 . PHP_EOL;
}
 
my_merge_image("img1.png", "img2.png" );
 
dans ce code j'utilise list pour lister les infos des photos, la 3 eme valeur étant width et heigth donc ce que je recherche, c'est pourquoi je défini $size1 et$size2 avec la value 3 du tableau.  
Ensuite j'utilise explode pour récupéré les valeur width et heigth seule (séparément), voilà, j'ai maintenant ça d'afficher dans mpn terminal.
 
php css_generator.php
Array
(
    [0] => 1200
    [1] => 800
    [2] => 3
    [3] => width="1200" height="800"
    [bits] => 8
    [mime] => image/png
)
Array
(
    [0] => 1165
    [1] => 801
    [2] => 3
    [3] => width="1165" height="801"
    [bits] => 8
    [mime] => image/png
)
width="1200" height="800"
width="1165" height="801"
width="1200"
height="801"
width="1165"
height="801"
 
 
 
j'ai donc réussi à récupérer une width et une height pour mes 2 images et je les ai mis dans des variables $x1 $x2 $y1 $y2 pour m'en servir par la suite, mais maintenant j'aimerais ne garder que la valeur et non la clé, c'est à dire 1200 1165 801 et 800.
 
Je ne vois pas comment faire, quand j'aurais réussi je me pencherai sur l'étape 2 qui demande de scanner un dossier pour y prendre les images qui s'y trouvent et les ajouter a une seule image, automatiquement.
 
Et merci pour votre aide je débute et j'ai des lacunes mais je suis motivé.

n°2460102
mechkurt
Posté le 13-12-2023 à 16:25:16  profilanswer
 

Ici on aide à trouver, on corriges le code mais on ne résout pas les exercices cf. la charte de la section.
 
Lit la doc de ses 2 fonctions (et les exemples) :
https://www.php.net/manual/fr/funct [...] ecolor.php
https://www.php.net/manual/fr/funct [...] ymerge.php
Faut que tu crées ton image de destination avec ta dimension total et que tu positionnes tes images ou il le faut.
Le reste c'est des simples additions, prend un papier et un crayon, ça aide ! ^^
 
Pour le parcours de dossier tu as :
https://www.php.net/manual/fr/function.glob.php
Qui est très bien si tu est sur de n'avoir que des png.
 
Ou :
https://www.php.net/manual/fr/function.scandir
Mais il faudra filtrer certains trucs que tu ne veux pas (genre . et ..  :o ).


---------------
D3
n°2460188
rufo
Pas me confondre avec Lycos!
Posté le 14-12-2023 à 17:27:41  profilanswer
 

Ta fonction de merge d'images devrait prendre en paramètre un nom de répertoire ou une liste de chemins d'images. Là, c'est figé à 2 image, tu vas te retrouver bloquer pour la suite de ton exo :o
 
$infosimg1 = list($x1, $y1) = getimagesize('img1.png');
--> Pas franchement propre :/
 
Et +1 pour les conseils de mechkurt.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Rassembler plusieurs image en une seule

 

Sujets relatifs
Image=point d’interrogation sur fond bleu.Afficher une image selon la date et avec lien hyper texte
[Résolu] Suivre un contour dans une imagesed (ou ?) pour remplacer plusieurs lignes dans fichiers par d'autres
Recherche et Remplacement devant une imageRegrouper plusieurs résultats sur une seule ligne
Extraire image lien avec Beautiful SoupPourquoi j'ai cette erreur lorsque je met une image dans un bouton ou
Comment charger une image ? 
Plus de sujets relatifs à : Rassembler plusieurs image en une seule


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR