Images overlappen
Ik wil jullie vragen of jullie weten hoe je transparante plaatjes kunt overlappen, en dan uitvoeren naar een PNG file en die saven/laten downloaden.
Zoals.
Je hebt een foto.
Je wilt daar een tekst in zetten met je eigen lettertype, dat bestaat uit transparent gifjes.
Hoe kun je ze over elkaar plakken en dan saven naar 1 (png/gif) bestand?
Ik hoop dat jullie snappen wat ik bedoel, en anders maak ik nog wel een Paint-afbeelding met uitleg wat ik bedoel :D
Alvast bedankt en gelukkig nieuwjaar alvast :),
Aron
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromgif('image2.gif');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src,
0, // waar je de afbeelding wilt plakken ($src_x)
0, // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($src),
imagesy($src),
100
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>
$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromgif('image2.gif');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src,
0, // waar je de afbeelding wilt plakken ($src_x)
0, // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($src),
imagesy($src),
100
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>
Moet ik dit dan herhalen om telkens een letter erbij te plakken.
Dus de width van de letter + 2 pixels, en dan de volgende letter met een
Gewijzigd op 29/12/2013 09:11:01 door Aron van W
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$dest = imagecreatefrompng('image1.png');
$textcolor = imagecolorallocate($dest, 255, 255, 255);
imagettftext($dest,
20, // $size
0, // $angle
20, // $x (gemeten vanaf de linksonderhoek van de eerste letter)
30, // $y (gemeten vanaf de linksonderhoek van de eerste letter)
$textcolor, // $color
'arial.ttf', // $fontfile,
$_GET['text'] // $text
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
?>
$dest = imagecreatefrompng('image1.png');
$textcolor = imagecolorallocate($dest, 255, 255, 255);
imagettftext($dest,
20, // $size
0, // $angle
20, // $x (gemeten vanaf de linksonderhoek van de eerste letter)
30, // $y (gemeten vanaf de linksonderhoek van de eerste letter)
$textcolor, // $color
'arial.ttf', // $fontfile,
$_GET['text'] // $text
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
?>
Tim
Ik gaf als voorbeeld tekst maar dat was misschien niet het goede. Wat ik eigenlijk wil is van Minecraft.
Je heb het vak van een crafting table en dan kun je met bepaalde inputs de plaatjes op de juiste items krijgen.
Als je snapt wat ik bedoel. Het is dus een generator die met GIF inputs die die op de juiste plaats zet alles naar PNG uitschrijft.
Code (php)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
$gifs = array(
array(
'filename' => 'image2.gif',
'x' => 0,
'y' => 0,
),
array(
'filename' => 'image3.gif',
'x' => 50,
'y' => 50,
),
array(
'filename' => 'image4.gif',
'x' => 100,
'y' => 100,
),
);
$src = null;
while (count($gifs) > 0) {
$gif = array_shift($gifs);
if ($src == null) {
$src = imagecreatefromgif($gif['filename']);
} else {
$new_src = imagecreatefromgif($gif['filename']);
imagealphablending($src, false);
imagesavealpha($src, true);
imagecopymerge($src, $new_src,
$gif['x'], // waar je de afbeelding wilt plakken ($src_x)
$gif['y'], // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($new_src),
imagesy($new_src),
100
);
imagedestroy($new_src);
}
}
$dest = imagecreatefrompng('image1.png');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src,
0, // waar je de afbeelding wilt plakken ($src_x)
0, // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($src),
imagesy($src),
100
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>
$gifs = array(
array(
'filename' => 'image2.gif',
'x' => 0,
'y' => 0,
),
array(
'filename' => 'image3.gif',
'x' => 50,
'y' => 50,
),
array(
'filename' => 'image4.gif',
'x' => 100,
'y' => 100,
),
);
$src = null;
while (count($gifs) > 0) {
$gif = array_shift($gifs);
if ($src == null) {
$src = imagecreatefromgif($gif['filename']);
} else {
$new_src = imagecreatefromgif($gif['filename']);
imagealphablending($src, false);
imagesavealpha($src, true);
imagecopymerge($src, $new_src,
$gif['x'], // waar je de afbeelding wilt plakken ($src_x)
$gif['y'], // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($new_src),
imagesy($new_src),
100
);
imagedestroy($new_src);
}
}
$dest = imagecreatefrompng('image1.png');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src,
0, // waar je de afbeelding wilt plakken ($src_x)
0, // waar je de afbeelding wilt plakken ($src_y)
0, // vanaf waar ($dest_x)
0, // vanaf waar ($dest_y)
imagesx($src),
imagesy($src),
100
);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
?>
Zal ff kijke offie werkt.