79 votes

Fusionner deux images avec PHP

J'essaie de fusionner deux images avec PHP.

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

Image 1

alt text

Image deux

alt text

...et que ça se transforme en ça ? RÉSULTAT FINAL :

alt text

1 votes

Juste l'affichage ou vous essayez de générer l'image

0 votes

Si le filigrane fonctionne, mais ne donne pas 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 sur le côté gauche et la deuxième image sur le côté droit. Je sais que l'écriture du code ne sera pas aussi facile que de poster des commentaires. Il suffit de commenter ce qui me vient à l'esprit.

1 votes

Vous êtes sûr d'avoir besoin de php ? Vous pouvez facilement le mettre en css.

127voto

Homework Points 1561

Je l'ai fait fonctionner à partir d'un autre 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);
?>

4 votes

Fonctionne sur les images avec transparence.

25voto

Crozin Points 22346

La question porte sur la fusion de deux images, mais dans ce cas précis, vous ne devriez pas le faire. Vous devez mettre Image du contenu (c'est-à-dire la couverture) en <img /> et Image de style en CSS, pourquoi ?

  1. Comme je l'ai dit, la couverture appartient à la contenu du document, tandis que le disque vinyle et l'ombre font simplement partie des styles de page.
  2. Une telle séparation est beaucoup plus pratique à utiliser. L'utilisateur peut facilement copier cette image. Elle est plus facile à indexer par les web-spiders.
  3. Enfin, il est beaucoup plus facile à entretenir.

Utilisez donc 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;
}

3 votes

Merci pour cela, mais j'ai demandé du PHP. Je vais quand même le sauvegarder.

1 votes

C'est vrai. 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 toujours la partie de l'image avec le vinyle.

2 votes

La réponse choisie est intéressante car nous pouvons mélanger deux images et les partager sur facebook.

2voto

shady Points 611

Utilisez la bibliothèque GD ou ImageMagick. J'ai cherché sur Google "PHP GD merge images" et j'ai trouvé plusieurs articles sur ce sujet. Dans le passé, j'ai créé une grande image vide, puis j'ai utilisé imagecopymerge() pour coller ces images dans l'image vide d'origine. Consultez les articles sur Google, vous trouverez du code source que vous pourrez commencer à utiliser immédiatement.

1voto

Alex Howansky Points 16820

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

1voto

Joel Points 868

La bibliothèque GD Image Manipulation Library in PHP est probablement la meilleure pour travailler avec des images en PHP. Essayez l'une des fonctions imagecopy (imagecopy, imagecopymerge, ...). Chacune d'entre elles combine deux images de manière différente. Voir le Documentation php sur l'imagecopy pour plus d'informations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X