2010-11-27 8 views
2

Je voudrais ajouter une image au fond d'une autre en phpAjout d'une image au bas d'un autre en PHP

J'ai cette option pour charger les images:

//load top 
$top = @imagecreatefrompng($templateTop); 
//load bottom 
$bottom = @imagecreatefrompng($templateBottom); 

Maintenant, je J'aimerais les ajouter à une image et afficher ensemble le haut et le bas.

De quelle façon puis-je faire cela?

Merci!

Répondre

16

Utilisation imagecopy:

$top_file = 'image1.png'; 
$bottom_file = 'image2.png'; 

$top = imagecreatefrompng($top_file); 
$bottom = imagecreatefrompng($bottom_file); 

// get current width/height 
list($top_width, $top_height) = getimagesize($top_file); 
list($bottom_width, $bottom_height) = getimagesize($bottom_file); 

// compute new width/height 
$new_width = ($top_width > $bottom_width) ? $top_width : $bottom_width; 
$new_height = $top_height + $bottom_height; 

// create new image and merge 
$new = imagecreate($new_width, $new_height); 
imagecopy($new, $top, 0, 0, 0, 0, $top_width, $top_height); 
imagecopy($new, $bottom, 0, $top_height+1, 0, 0, $bottom_width, $bottom_height); 

// save to file 
imagepng($new, 'merged_image.png'); 
1

Pour ce faire, vous devrez a) Combiner l'image et stocker le résultat dans un fichier b) générer une étiquette appropriée pour pointer vers elle. c) Évitez d'utiliser à nouveau ce nom de fichier, jusqu'à ce que cette personne soit partie.

Si vous souhaitez combiner deux images une seule fois, utilisez la magie de l'image.

Si vous souhaitez fréquemment afficher deux images l'une sous l'autre, utilisez le format html approprié et laissez le navigateur le faire.

E.g. Mettez les images dans un

 
<div><div><img.../></div><div><img .../></div></div> 

que vous générez avec php de façon normale. (ce qui est plus facile que d'obtenir des balises à apparaître ici :)

+1

Cela ne sonne pas du tout comme ce qu'il demandait ... sans connaître son cas d'utilisation, ce qui est probablement pas une solution viable. Je suppose qu'il veut le faire pour les sprites CSS. – mpen

0
$photo_to_paste = "photo_to_paste.png"; 
$white_image = "white_image.png"; 

$im = imagecreatefrompng($white_image); 
$im2 = imagecreatefrompng($photo_to_paste); 


// Place "photo_to_paste.png" on "white_image.png" 
imagecopy($im, $im2, 20, 10, 0, 0, imagesx($im2), imagesy($im2)); 

// Save output image. 
imagepng($im, "output.png", 0); 
+0

Peut ne pas être la réponse à cette question, mais cela ne mérite pas une downvote pour la raison que c'est la réponse SI vous voulez que les deux images les unes sur les autres – Wanjia