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

  FORUM HardWare.fr
  Programmation
  PHP

  Superposition de deux images

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Superposition de deux images

n°240966
Vadrigar
Posté le 06-11-2002 à 23:24:43  profilanswer
 

Salut,
 
J'ai vu dans un recent tuto de phpdebutant.com qu'il etait possible de faire pas mal de manipulations sur une image: http://www.phpdebutant.org/article111.php
 
J'aurais voulu savoir si il etait possible grace a une fonction de ce genre de fusionner 2 images pour en obtenir une seule ?
 
Par exemple un calque transparent avec le logo de mon site, qui viendrait se superposer à toute les images mise sur le site. Tout ceci automatiquement grace a une fonction.
 
Merci d'avance.


Message édité par Vadrigar le 06-11-2002 à 23:26:46
mood
Publicité
Posté le 06-11-2002 à 23:24:43  profilanswer
 

n°241102
Mr_Peer
:)
Posté le 07-11-2002 à 10:25:49  profilanswer
 

il me semble que j'avais vu un tuto pour rendre une image semi transparente... si je retrouve l'adresse, je la mettrais ici :)


---------------
Parce que vous aussi vous le valez bien :)
n°241186
Vadrigar
Posté le 07-11-2002 à 13:20:08  profilanswer
 

Ok merci

n°241212
Hermes le ​Messager
Breton Quiétiste
Posté le 07-11-2002 à 14:24:25  profilanswer
 

ImageCopyMerge
(PHP 4 >= 4.0.1)
 
ImageCopyMerge --  Copie et fusionne une partie d'une image  
Description
int imagecopymerge ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)
 
 
imagecopymerge() copie une partie de l'image src_im dans l'image de destination dst_im en commençant aux coordonnées (src_x, src_y), avec la largeur src_w et la hauteur src_h. La zone de l'image ainsi définie sera copiée aux coordonnées (dst_x, dst_y), dans l'image de destination. Les deux images seront fusionnées suivant le paramètre pct, qui peut valoir de 0 à 100. Si pct = 0, aucune action n'est faite, alors que si pct = 100, imagecopymerge() se comporte exactement comme imagecopy().  
 
Note : imagecopymerge() a été ajoutée en PHP 4.0.6.  

n°241226
Mirgolth
Posté le 07-11-2002 à 14:34:50  profilanswer
 

Salut,
 
J'ai quelque part dans mes cartons un projet de site de jeu de plateau online. Je voulais donc que superposer l'image du pion a celle de la case.
 
De mémoire imagecopymerge() ne donnais pas le résultat cherché car elle mélange les couleurs de chaque image et ne le superpose pas.
Je faisait donc une méthode un peu bourrin: pour chacun des pixels de images1 ( au dessus ) je comparais avec la valeur de la couleur transparente. En cas de test positif le pixel de l'image final prenait la couleur du pixel de l'image1 sinon de images2.
 
Je n'est pas le code avec moi, je le poste aussi demain.
 
Mirgolth

n°241278
Hermes le ​Messager
Breton Quiétiste
Posté le 07-11-2002 à 15:10:05  profilanswer
 

Heu, tu n'as pas du utiliser la commande décrite ci-dessus correctement, car moi je n'ai aucun problème avec...  :heink:

n°241283
omega2
Posté le 07-11-2002 à 15:16:14  profilanswer
 

Hermes le Messager a écrit a écrit :

Heu, tu n'as pas du utiliser la commande décrite ci-dessus correctement, car moi je n'ai aucun problème avec...  :heink:  



Ce qu'il veut dire c'est qu'il a été géné par l'abscence de couleur transparente dans les images des pièces ou que la couleur transparente n'est pas géré par imagecopymerge().
Du coup, soit il affichait pas sa pièce, soit une pièce sur une case blanche n'avait pas la même couleur que la même pièce sur une case noire. ;)

n°241298
Mirgolth
Posté le 07-11-2002 à 15:28:22  profilanswer
 

C'est ça Omega2 !
 
si tu as un carré rouge et un bleu imagecopymerge () va te sortir un carré violet, plus ou moins selon la valeur de pct.
 
Mirgolth


---------------
Livres dont vous êtes le héros
n°241301
Hermes le ​Messager
Breton Quiétiste
Posté le 07-11-2002 à 15:30:34  profilanswer
 

Oki !  
 
Mais ce problème n'est-il pas résolu avec des images en png ?  :??:

n°241312
Mirgolth
Posté le 07-11-2002 à 15:39:59  profilanswer
 

Hermes le Messager a écrit a écrit :

Oki !  
 
Mais ce problème n'est-il pas résolu avec des images en png ?  :??:  




Je bossais sur des png.
Mais ce n'est pas un problème, c'est une fonctionalité  :)  
C'est le but de cette fonction: mélanger/fusionner 2 images mais je suis sur qu'il existe mieux que ma technique porcine.
 
Mirgolth


---------------
Livres dont vous êtes le héros
mood
Publicité
Posté le 07-11-2002 à 15:39:59  profilanswer
 

n°241684
Mirgolth
Posté le 08-11-2002 à 11:23:21  profilanswer
 

mirgolth a écrit a écrit :

Je n'est pas le code avec moi, je le poste aussi demain.



J'ai un peu la tête creuse et j'ai oublié  :(  
Mais je trouverais bien le temps pendant ce long WE...
 
Mirgolth


---------------
Livres dont vous êtes le héros
n°241712
Vadrigar
Posté le 08-11-2002 à 12:32:45  profilanswer
 

Ok bah merci en tout cas  :jap:

n°243319
Mirgolth
Posté le 12-11-2002 à 09:52:41  profilanswer
 

Voilà le code que j'avais fais.
C'est lent, très lent !
 
Si quelqu'un à déjà utilisé imagecolortransparent () correctement pouvais me renseigner d'ailleurs...
 

Code :
  1. <?php
  2. $image1 = "jaune.png"; // dessous
  3. $image2 = "rouge2.png"; // dessus
  4. $im1 = imagecreatefrompng ($image1);
  5. $im2 = imagecreatefrompng ($image2);
  6. $size = getimagesize ($image1);
  7. $im = @imagecreate ($size[0], $size[1]);
  8. /**
  9. Méthode qui ne marche pas !
  10. Je recupère la couleur transparente de $im2
  11. $trou = imagecolortransparent ($im2);
  12. $index = imagecolorsforindex ($im2, $trou );
  13. $transp = imagecolortransparent ( $im, imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] ));
  14. */
  15. // Comme l'autre méthode ne fonctionne pas je met la couleur transparente à blanc...
  16. $transp = imagecolortransparent ( $im, imagecolorallocate ( $im, 255, 255, 255 ));;
  17. for ($y = 0; $y < 20; $y++) {
  18. for ($x = 0; $x < 20; $x++) {
  19.  $color = imagecolorat ($im2,$x,$y);
  20.  $index = imagecolorsforindex ($im2, $color );
  21.  $new_index = imagecolorexact ( $im, $index['red'], $index['green'], $index['blue'] );
  22.  if ( $new_index < 0 ) {
  23.   $new_index = imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] );
  24.  }
  25.  if ($new_index == $transp) {
  26.   // Transparent : on recupère la couleur de fond
  27.   $index = imagecolorsforindex ($im1, imagecolorat ($im1,$x,$y) );
  28.   $final = imagecolorexact ( $im, $index['red'], $index['green'], $index['blue'] );
  29.   if ( $final < 0 ) {
  30.    $final = imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] );
  31.   }
  32.   imagesetpixel($im, $x, $y, $final);
  33.  } else {
  34.   // Pas transparent
  35.   imagesetpixel($im, $x, $y, $new_index);
  36.  }
  37. }
  38. }
  39. header ("Content-type: image/png" );
  40. imagepng ($im);
  41. ?>


---------------
Livres dont vous êtes le héros

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

  Superposition de deux images

 

Sujets relatifs
[PHP] chtit script sympatoche!!! de gallerie d'images en deux secondesCherche librairie pour assistance à la création d'images
[HTML] comment on met un espace entre des images sur une page html ?Problème IE : décalage des images dans les tables
[résolu] images Tiff : tag spécifiant la position du repère[VB] - C'est facile de générer des images BMP en 16,7M color avec VB?
[PHP] Superposer 2 imagesLes images ne s'affichent pas sur mon site !!
LIB pour les images[PHP] superposition d images
Plus de sujets relatifs à : Superposition de deux images


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