Mirgolth | Voilà le code que j'avais fais.
C'est lent, très lent !
Si quelqu'un à déjà utilisé imagecolortransparent () correctement pouvais me renseigner d'ailleurs...
Code :
- <?php
- $image1 = "jaune.png"; // dessous
- $image2 = "rouge2.png"; // dessus
- $im1 = imagecreatefrompng ($image1);
- $im2 = imagecreatefrompng ($image2);
- $size = getimagesize ($image1);
- $im = @imagecreate ($size[0], $size[1]);
- /**
- Méthode qui ne marche pas !
- Je recupère la couleur transparente de $im2
-
- $trou = imagecolortransparent ($im2);
- $index = imagecolorsforindex ($im2, $trou );
- $transp = imagecolortransparent ( $im, imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] ));
- */
- // Comme l'autre méthode ne fonctionne pas je met la couleur transparente à blanc...
- $transp = imagecolortransparent ( $im, imagecolorallocate ( $im, 255, 255, 255 ));;
- for ($y = 0; $y < 20; $y++) {
- for ($x = 0; $x < 20; $x++) {
- $color = imagecolorat ($im2,$x,$y);
- $index = imagecolorsforindex ($im2, $color );
- $new_index = imagecolorexact ( $im, $index['red'], $index['green'], $index['blue'] );
- if ( $new_index < 0 ) {
- $new_index = imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] );
- }
- if ($new_index == $transp) {
- // Transparent : on recupère la couleur de fond
- $index = imagecolorsforindex ($im1, imagecolorat ($im1,$x,$y) );
- $final = imagecolorexact ( $im, $index['red'], $index['green'], $index['blue'] );
- if ( $final < 0 ) {
- $final = imagecolorallocate ( $im, $index['red'], $index['green'], $index['blue'] );
- }
- imagesetpixel($im, $x, $y, $final);
- } else {
- // Pas transparent
- imagesetpixel($im, $x, $y, $new_index);
- }
- }
- }
- header ("Content-type: image/png" );
- imagepng ($im);
- ?>
|
---------------
Livres dont vous êtes le héros
|