gd library
wie kan me helpen ik wil in gd libery verschillende plaatje overelkaar plakken maar het plaatje wat er onder ligt moet nog wel te zien zijn.
Ik doe het nu met de functie imagecopy maar dat werkt niet, wat doe ik verkeerd.
Graag advies
Mvg,
Phpkunst
Gewijzigd op 01/01/1970 01:00:00 door Phpkunst t
Het is handiger als je de code die je nu hebt even post. :)
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
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
<?php
header("Content-type: image/png");
$image = imageCreateTruecolor(485,485);
if(!empty($_GET))
{
extract($_GET);
}
$breedte=$h*2;
$hoogte=$b*2;
if (!empty($machine))
{
for ($tel=1;$tel<=$aantal;$tel++)
{
if(!empty($Y[$tel]) AND ($X[$tel]))
{
$as[$tel] = imagecreatefrompng("./assen/$tel$machine.png");
$as_breedte[$tel] = imagesx($as[$tel]);
$as_hoogte[$tel] = imagesy($as[$tel]);
imagecreatetruecolor($as_breedte[$tel], $as_hoogte[$tel]);
imagecopy($image, $as[$tel], $X[$tel], $Y[$tel], 0, 0, $as_breedte[$tel], $as_hoogte[$tel]);
}
}
}
$transparent = imageColorAllocate($image, 0, 0, 0);
imageColorTransparent($image, $transparent);
$black = imageColorAllocate($image, 1, 1, 1);
ImageRectangle ($image, 0, 0, $hoogte, $breedte,$black);
imagePng($image, '' , 100);
imagedestroy($image);
?>
header("Content-type: image/png");
$image = imageCreateTruecolor(485,485);
if(!empty($_GET))
{
extract($_GET);
}
$breedte=$h*2;
$hoogte=$b*2;
if (!empty($machine))
{
for ($tel=1;$tel<=$aantal;$tel++)
{
if(!empty($Y[$tel]) AND ($X[$tel]))
{
$as[$tel] = imagecreatefrompng("./assen/$tel$machine.png");
$as_breedte[$tel] = imagesx($as[$tel]);
$as_hoogte[$tel] = imagesy($as[$tel]);
imagecreatetruecolor($as_breedte[$tel], $as_hoogte[$tel]);
imagecopy($image, $as[$tel], $X[$tel], $Y[$tel], 0, 0, $as_breedte[$tel], $as_hoogte[$tel]);
}
}
}
$transparent = imageColorAllocate($image, 0, 0, 0);
imageColorTransparent($image, $transparent);
$black = imageColorAllocate($image, 1, 1, 1);
ImageRectangle ($image, 0, 0, $hoogte, $breedte,$black);
imagePng($image, '' , 100);
imagedestroy($image);
?>
Wie heeft hier ervaring mee en kan me duwtje de goede richting in geven.
Mvg,
Phpkunst
jankoehoorn.nl. Je kunt dit ook gebruiken voor een watermerk-script.
Laat even weten of dit is wat je bedoelt, dan post ik de code.
Ik heb me even op je probleem gestort. Het resultaat kun je bekijken op Laat even weten of dit is wat je bedoelt, dan post ik de code.
als dat niet kan dan doe ik wel zo.
bedankt,
Phpkunst
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Merging Images with PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
#container {
margin: 8px auto;
width: 600px;
border: 1px solid #ccc;
text-align: center;
}
h1 {
font: bold 18px georgia;
color: #fff;
background-color: #666;
margin: 8px 16px;
padding: 5px;
}
h2 {
font: bold 14px georgia;
color: #666;
background-color: #fff;
}
img {
border: 1px solid #ccc;
padding: 9px;
}
</style>
</head>
<body>
<div id="container">
<h1>PHP GD: merging images</h1>
<h2>Dit is plaatje 1</h2>
<p>
<img src="gd1.jpg" alt="plaatje 1">
</p>
<h2>Dit is plaatje 2</h2>
<p>
<img src="gd2.jpg" alt="plaatje 2">
</p>
<h2>Dit is plaatje 3</h2>
<p>
<img src="gd3.jpg" alt="plaatje 3">
</p>
<?php
// image identifiers aanmaken
$img1 = imagecreatefromjpeg ('gd1.jpg');
$img2 = imagecreatefromjpeg ('gd2.jpg');
$img3 = imagecreatefromjpeg ('gd3.jpg');
// de hoogte en de breedte weet ik al
$dst = imagecreatetruecolor (400, 400);
// plaatje 1 kunnen we gewoon kopiëren
imagecopyresampled ($dst, $img1, 0, 0, 0, 0, 400, 400, 400, 400);
// plaatje 2 mergen. Het laatste argument bepaalt de mate van transparantie (0 - 100)
imagecopymerge ($dst, $img2, 0, 0, 0, 0, 400, 400, 50);
// plaatje 3 mergen.
imagecopymerge ($dst, $img3, 0, 0, 0, 0, 400, 400, 30);
// nieuwe plaatje genereren (zorg dat je de goede rechten hebt in de map!)
imagejpeg ($dst, 'gd4.jpg', 85);
// anders kun je hem later niet meer handmatig wissen
chmod ('gd4.jpg', 0644);
// opschonen
imagedestroy ($img1);
imagedestroy ($img2);
imagedestroy ($img3);
imagedestroy ($dst);
?>
<h2>En dit zijn de plaatjes door elkaar heen</h2>
<p>
<img src="gd4.jpg" alt="merged picture">
</p>
</div>
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Merging Images with PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
#container {
margin: 8px auto;
width: 600px;
border: 1px solid #ccc;
text-align: center;
}
h1 {
font: bold 18px georgia;
color: #fff;
background-color: #666;
margin: 8px 16px;
padding: 5px;
}
h2 {
font: bold 14px georgia;
color: #666;
background-color: #fff;
}
img {
border: 1px solid #ccc;
padding: 9px;
}
</style>
</head>
<body>
<div id="container">
<h1>PHP GD: merging images</h1>
<h2>Dit is plaatje 1</h2>
<p>
<img src="gd1.jpg" alt="plaatje 1">
</p>
<h2>Dit is plaatje 2</h2>
<p>
<img src="gd2.jpg" alt="plaatje 2">
</p>
<h2>Dit is plaatje 3</h2>
<p>
<img src="gd3.jpg" alt="plaatje 3">
</p>
<?php
// image identifiers aanmaken
$img1 = imagecreatefromjpeg ('gd1.jpg');
$img2 = imagecreatefromjpeg ('gd2.jpg');
$img3 = imagecreatefromjpeg ('gd3.jpg');
// de hoogte en de breedte weet ik al
$dst = imagecreatetruecolor (400, 400);
// plaatje 1 kunnen we gewoon kopiëren
imagecopyresampled ($dst, $img1, 0, 0, 0, 0, 400, 400, 400, 400);
// plaatje 2 mergen. Het laatste argument bepaalt de mate van transparantie (0 - 100)
imagecopymerge ($dst, $img2, 0, 0, 0, 0, 400, 400, 50);
// plaatje 3 mergen.
imagecopymerge ($dst, $img3, 0, 0, 0, 0, 400, 400, 30);
// nieuwe plaatje genereren (zorg dat je de goede rechten hebt in de map!)
imagejpeg ($dst, 'gd4.jpg', 85);
// anders kun je hem later niet meer handmatig wissen
chmod ('gd4.jpg', 0644);
// opschonen
imagedestroy ($img1);
imagedestroy ($img2);
imagedestroy ($img3);
imagedestroy ($dst);
?>
<h2>En dit zijn de plaatjes door elkaar heen</h2>
<p>
<img src="gd4.jpg" alt="merged picture">
</p>
</div>
</body>
</html>
Mvg,
Phpkunst
watermerk test gedaan. Krijg het alleen aan de praat als ik een transparent GIF gebruik voor het watermerk.
Graag gedaan. Ik heb ook nog even een oke bedankt
Maar ik loop nu te proberen om die plaatjes allemaal dezelfde 'zichtbaarheid' te geven. Ik kom het dichtst in de buurt als ik de onderste 99 'zichtbaarheid' geef, de middelste 66 en de bovenste 33.
Toch zie ik nog een kleine verandering als ik de onderste foto omwissel met de bovenste foto. Vergelijk ze hier maar eens.
Weet iemand hoe je echt goed kan berekenen wat de verhoudingen moeten zijn?
Edit:
Zie het al: 100/(aantal plaatjes+1) is bovenste plaatje, + 100/(aantalplaatjes+1) is 1-na bovenste plaatje, enzovoort
Gewijzigd op 01/01/1970 01:00:00 door Lasse