Fusionner deux images PNG avec la librairie GD de PHP
Quelqu'un at-il un script qui peut fusionner deux images PNG?
Avec les conditions suivantes:
- Les deux images ont des zones transparentes
- La deuxième image doit avoir une opacité de 50% (elle est placée sur la première image)
Voici ce que j'ai essayé de faire mais sans succès:
<?php
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
$cut = imagecreatetruecolor($src_w, $src_h);
imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
}
$image1 = imagecreatefrompng('a.png'); //300 x 300
$image2 = imagecreatefrompng('b.png'); //150 x 150
$merged_image = imagecreatetruecolor(300, 300);
imagealphablending($merged_image, false);
imagesavealpha($merged_image, true);
imagecopy($merged_image, $image1, 0, 0, 0, 0, 300, 300);
imagecopymerge_alpha($merged_image, $image2, 0, 0, 0, 0, 150, 150, 50);
header('Content-Type: image/png');
imagepng($merged_image);
?>
Edit:
- Première Image (à gauche) et la Deuxième Image (à droite)
- C'est comment il devrait être (à gauche) et le résultat de mon code (à droite)
- Le résultat de la solution proposée par dqhendricks
Expliquer mais sans succès. Quel est le code que vous avez posté produire?
Bienvenue à Débordement de Pile! "Il n'a pas de travail" est jamais, une bonne description de l'erreur. Veuillez décrire ce qui ne va pas, ce que les messages d'erreur que vous obtenez, etc.
La première image est transparent, le fond de la deuxième image qui devrait être transparent, qui devient noir (semi-transparent noir).
bienvenue. vous êtes nouveau, de sorte que vous ne connaissez pas encore, mais ce n'est pas un site pour demander où de "script". il est utilisé pour comprendre les problèmes de programmation.
Bienvenue à Débordement de Pile! "Il n'a pas de travail" est jamais, une bonne description de l'erreur. Veuillez décrire ce qui ne va pas, ce que les messages d'erreur que vous obtenez, etc.
La première image est transparent, le fond de la deuxième image qui devrait être transparent, qui devient noir (semi-transparent noir).
bienvenue. vous êtes nouveau, de sorte que vous ne connaissez pas encore, mais ce n'est pas un site pour demander où de "script". il est utilisé pour comprendre les problèmes de programmation.
OriginalL'auteur acoder | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
ce devrait être tout ce dont vous avez besoin. $image1 doit tenir l'image fusionnée où image2 a été superposé avec une opacité de 50%. le dernier argument est l'alpha de la copie fusionnée.
http://php.net/manual/en/function.imagecopymerge.php
la version de PHP que vous utilisez?
pouvez-vous l'exécutez php.net/manual/en/function.imageistruecolor.php sur les deux image1 et de l'image 2 pour vérifier qu'ils sont chargés comme des truecolor images?
PHP Version 5.2.17 GD Version fournie (2.0.34 compatible)
apparemment il y a un bug ouvert pour ceci: bugs.php.net/bug.php?id=23815
OriginalL'auteur dqhendricks
OriginalL'auteur Mike