[PHP] Transparantie ImageCreate

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ronaldude
  • Registratie: Juli 2002
  • Laatst online: 06-03-2021

Ronaldude

Zipp it!!!

Topicstarter
Ben er nu al een aardig tijdje mee aan het stoeien, maar het wil niet helemaal lukken. Ik heb 2 plaatjes. Deze wil ik mergen tot 1 plaatje op deze manier:
Afbeeldingslocatie: http://ronaldude.nl/mergen.gif

Bij de bloemen valt in het midden de hoek weg, omdat de kleur wit transparant wordt. In het midden moeten de bloemen juist doorschijnen!

Hier de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
// image testing
$width = 240;
$height = 140;

// nu moet ik 2 plaatjes erin krijgen, allebei schuin
// 2 plaatjes, allebei 210 breed
$image[0] = imagecreatefromjpeg("image1.jpg");
$image[1] = imagecreatefromjpeg("image2.jpg");
$image[2] = ImageCreateTrueColor($width,$height);

$color[0] = imagecolorallocate($image[0], 0, 0, 255);
$color[1] = imagecolorallocate($image[1], 0, 0, 255);
$color[2] = imagecolorallocate($image[2], 0, 0, 255);

imagecolortransparent ( $image[0] ,$color[0]);
imagecolortransparent ( $image[1] ,$color[1]);
imagecolortransparent ( $image[2] ,$color[2]);

$points[0] = array(0,0,0,140,40,140,120,0);
$points[1] = array(210,0,130,140,280,140);
$points[2] = array(0,140,80,0,0,0);
$points[3] = array(80,140,210,140,210,0,160,0);

imagefilledpolygon ( $image[0], $points[0], (count($points[0])/2), $color[0]);
imagefilledpolygon ( $image[0], $points[1], (count($points[1])/2), $color[0]);

imagefilledpolygon ( $image[1], $points[2], (count($points[2])/2), $color[1]);
imagefilledpolygon ( $image[1], $points[3], (count($points[3])/2), $color[1]);

imagecopy ( $image[2], $image[0], 0, 0, 40, 0, 210, 140);
imagecopy ( $image[2], $image[1], 80, 0, 0, 0, 160, 140);

header("Content-type: image/gif");
imagegif($image[2]);
?>

Ronaldude.nl!!!, Specs


Acties:
  • 0 Henk 'm!

  • Ronaldude
  • Registratie: Juli 2002
  • Laatst online: 06-03-2021

Ronaldude

Zipp it!!!

Topicstarter
Het is inmiddels gelukt. Ik sla eerst beide gegenereerde afbeeldingen op als gif, om ze daarna weer te openen met imagecreatefromgif. Hierdoor zijn de afbeeldingen uit zichzelf al transparant, dus hoef ik ze alleen nog maar over elkaar te zetten.

Dit toevoegen (voor de liefhebbers):
code:
1
2
3
4
5
6
7
8
9
10
11
imagegif($image[0],"img1.gif");
imagegif($image[1],"img2.gif");

$new_img[0] = imagecreatefromgif("img1.gif");
$new_img[1] = imagecreatefromgif("img2.gif");

unlink("img1.gif");
unlink("img2.gif");

imagecopy ( $image[2], $new_img[0], 0, 0, 40, 0, 210, 140);
imagecopy ( $image[2], $new_img[1], 80, 0, 0, 0, 160, 140);


In plaats van:
code:
1
2
imagecopy ( $image[2], $image[0], 0, 0, 40, 0, 210, 140);
imagecopy ( $image[2], $image[1], 80, 0, 0, 0, 160, 140);

[ Voor 53% gewijzigd door Ronaldude op 11-01-2006 13:13 ]

Ronaldude.nl!!!, Specs


Acties:
  • 0 Henk 'm!

Verwijderd

ALs je in plaats van gif nou ook nog eens op zoek gaat naar hoe dit werkt met png wordt het allemaal nog mooier want :

- PNG is 16,7 miljoen kleuren geen 256 zoals gif
- PNG ondersteund alpha blending (8 bits) dus 255 verschillende levels van trancparency ipv wel of niet doorzichtig

Hoop dat je hiermee tot een nog beter resultaat gaat komen

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Let er dan wel op dat je het eindresultaat als GIF uitvoert, en niet als PNG, aangezien niet alle browsers native overweg kunnen met PNG's met een alpha channel. *kuch IE kuch*

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op woensdag 11 januari 2006 @ 13:53:
Let er dan wel op dat je het eindresultaat als GIF uitvoert, en niet als PNG, aangezien niet alle browsers native overweg kunnen met PNG's met een alpha channel. *kuch IE kuch*
*M$-troll knip*
Ten eerste heet het bedrijf Microsoft, niet Micro$oft, en verder voegt zo'n troll niets toe aan het topic. Doe dit in het vervolg dan ook liever niet meer. :)


Als het eindresultaat niet transparant hoeft te zijn maar je alleen beide images wilt mergen zou ikzelf exporteren als jpg wederom om de kleuren zo moooi mogelijk over te laten komen

[ Voor 24% gewijzigd door NMe op 11-01-2006 20:45 ]


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
IE kan prima overweg met transparante png's, je moet er gewoon wat extra css/javascript dingen voor doen. Helemaal niet moeilijk.

Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Behalve dan dat Mozilla een script-foutmelding geeft bij het gebruik van die 'IE hack'.

IE gebruikers kunnen een voorbeeld zien op www.kraak-forum.nl (het logo is een transparante png)
Pagina: 1