2010-10-06 15 views
56

Je suis en train de fusionner deux images avec PHP.Fusion de deux images avec PHP

Par exemple ... comment irais-je placer l'image 1 sur l'image 2 ou la fusionner, avec PHP de base? J'ai essayé quelque chose comme le tatouage numérique, mais cela ne semble pas fonctionner.

image Un

alt text

image Deux

alt text

... et ont se transformer en cela? RÉSULTAT FINAL:

alt text

+0

afficher juste ou yu essayer de générer l'image – zod

+0

Si le filigrane fonctionne, mais ne pas donner le résultat que vous vouliez, mon esprit tordu pense à la combinaison de 3 images. la première image est une image blanche vierge, vous fusionnez la première image du côté gauche et la deuxième image du côté droit. Je sais que l'écriture de code ne sera pas facile pour poster des commentaires. Il suffit de commenter ce que cam dans mon esprit – zod

+1

êtes-vous sûr que vous avez besoin de php? vous pouvez facilement le css – devcline

Répondre

2

Utilisez la bibliothèque GD ou ImageMagick. Je ai googlé 'PHP GD fusionner des images' et a obtenu plusieurs articles sur ce faire. Dans le passé, ce que j'ai fait est de créer une grande image vide, puis utilisé imagecopymerge() pour coller ces images dans mon original vide. Consultez les articles sur google, vous trouverez un code source, vous pouvez commencer à utiliser tout de suite.

0

Vous pouvez le faire avec l'extension ImageMagick. Je devine que la méthode combineImages() fera ce que vous voulez.

1

La bibliothèque de manipulation d'images GD en PHP est probablement la meilleure pour travailler avec des images en PHP. Essayez l'une des fonctions imagecopy (imagecopy, imagecopymerge, ...). Chacun d'eux combine deux images de différentes manières. Voir le php documentation on imagecopy pour plus d'informations.

98

Je l'ai fait fonctionner à partir de celui que j'ai fait.

<?php 
$dest = imagecreatefrompng('vinyl.png'); 
$src = imagecreatefromjpeg('cover2.jpg'); 

imagealphablending($dest, false); 
imagesavealpha($dest, true); 

imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //have to play with these numbers for it to work for you, etc. 

header('Content-Type: image/png'); 
imagepng($dest); 

imagedestroy($dest); 
imagedestroy($src); 
?> 
+2

Fonctionne sur les images avec transparence. – Homework

21

La question est de fusionner deux images, mais dans ce cas spécifié vous ne devriez pas le faire. Vous devriez mettre Contenu Image (c'est-à-dire la couverture) en <img /> tag, et Style Image en CSS, pourquoi?

  1. Comme je l'ai dit la couverture fait partie du contenu du document, tandis que disque vinyle et de l'ombre ne sont qu'une partie des styles de page.
  2. Cette séparation est beaucoup plus pratique à utiliser. L'utilisateur peut facilement copier cette image. Il est plus facile d'indexer par les web-araignées.
  3. Enfin, c'est beaucoup plus facile à entretenir.

Il faut donc utiliser un code très simple:

<div class="cover"> 
    <img src="/content/images/covers/movin-mountains.png" alt="Moving mountains by Pneuma" width="100" height="100" /> 
</div> 

.cover { 
    padding: 10px; 
    padding-right: 100px; 

    background: url(/style/images/cover-background.png) no-repeat; 
} 
+2

Merci pour cela, mais j'ai demandé PHP. Je vais toujours enregistrer ça. – Homework

+1

True. C'est plus facile pour le serveur car il n'a pas à traiter toutes les images. Et c'est aussi plus rapide pour l'utilisateur car il n'a pas la partie de l'image avec le vinyle tout le temps. –

+2

La réponse sélectionnée est intéressante car nous pouvons mélanger deux images et partager sur facebook. –

2

ImageArtist est une enveloppe pure gd écrit par moi, cela vous permet de faire des manipulations d'images complexes incroyablement facile, pour votre solution question peut être fait en utilisant très quelques étapes en utilisant cette puissante bibliothèque.

Voici un exemple de code.

$img1 = new Image("./cover.jpg"); 
$img2 = new Image("./box.png"); 
$img2->merge($img1,9,9); 
$img2->save("./merged.png",IMAGETYPE_PNG); 

Voici à quoi ressemble mon résultat.

enter image description here

+0

Génial! Je vous remercie. – Homework