2011-03-06 2 views
1

Voici ce que j'essaie de faire. Be not im im assez nouveau à GD2Image PHP GD avec 2 fichiers

Je veux faire une image sur 2 images de cette façon;

Un rectangle de fond rempli d'images n ° 1

Après que je veux dessiner un polygon dessus rempli d'une autre image.

Ce que j'ai en ce moment, c'est le rectangle et l'image en arrière-plan.

Je peux dessiner le polygone mais je n'arrive pas à comprendre comment le remplir avec une autre image. il est rempli en bleu en ce moment et je voudrais le remplir avec une autre image.

Heres mon code

$values = array(
      40, 50, // Point 1 (x, y) 
      20, 240, // Point 2 (x, y) 
      60, 60, // Point 3 (x, y) 
      240, 20, // Point 4 (x, y) 
      50, 40, // Point 5 (x, y) 
      10, 10 // Point 6 (x, y) 
     ); 

$image2 = imagecreatefromjpeg('test2.jpg'); 
$image = imagecreatefromjpeg('test.jpg'); 

$bg = imagecreatefromjpeg('test.jpg'); 

$fill = imagecolorallocate($image, 0, 0, 255); 

// fill the background 
imagefilledrectangle($image, 0, 0, 249, 249, $bg); 

// draw a polygon 
imagefilledpolygon($image, $values, 6, $fill); 

// flush image 
header('Content-type: image/jpg'); 
imagepng($image); 
imagedestroy($image); 

que vous pouvez voir imagepng() render ne $image comment puis-je obtenir pour rendre l'image $ et image2 $

Merci à tous

+1

Votre en-tête est faux, devrait être 'Content-type: image/png' lorsque vous produisez une image png. – Czechnology

+0

Oui mais ce n'est qu'une page de test. Son travail ne m'importe pas quelle en-tête je lui donne. Je me concentre sur l'obtention de 2 images à charger dans 1 – MadeInDreams

+0

Vous devriez toujours le corriger. Ce n'est que trois caractères. –

Répondre

0

Je vous suggère Arraché imagealphablending Pour Image2, dessinez un inverse de votre polygone sur Image2 avec une couleur avec la valeur alpha: 0. Activez imagealphablending. Et puis vous pouvez copier Image2 sur Image1 (l'arrière-plan).

+0

Est-ce que cela signifie que je dois dessiner le polygone moi-même dans l'image? Cuse je veux faire quelque chose qui n'a pas besoin de dessiner des images La coordonnée polygone serait donnée par l'utilisateur en cliquant sur les images l'utilisateur utilise la page – MadeInDreams

+0

Si le ccordinates est important et que vous voulez une nouvelle image * basée sur les coordonnées *, vous devez le créer. La mise en cache est une autre histoire, vous pouvez enregistrer un nom de fichier qui contient les coordonnées, donc une fois créé l'image peut être servie à partir du disque pour les demandes suivantes. - Bien que j'ai peut-être mal compris votre question. – vbence

6

Vous devez superposer la deuxième image au-dessus de la première.

$file1 = 'test.jpg'; 
$file2 = 'test2.jpg'; 

// First image 
$image = imagecreatefromjpeg($file1); 

// Second image (the overlay) 
$overlay = imagecreatefromjpeg($file2); 

// We need to know the width and height of the overlay 
list($width, $height, $type, $attr) = getimagesize($file2); 

// Apply the overlay 
imagecopy($image, $overlay, 0, 0, 0, 0, $width, $height); 
imagedestroy($overlay); 

// Output the results 
header('Content-type: image/png'); 
imagepng($image); 
imagedestroy($image); 
+0

Haaaa !! Cela ressemble à ce que je cherche. Merci j'aime le mot overlay = p – MadeInDreams

+0

Merci pour ça. J'apprends juste GD et ça m'a beaucoup aidé pour un extrait sur lequel je travaille. –