bepaalde pixels uit een image
Ik zou graag bijvoorbeeld een stukje van 10 bij 10 pixels uit een bepaalde image willen halen. bijvoorbeeld:
of
kan ik dit op de een of andere manier selecteren uit een image, de images staan op mijn pc?
Gewijzigd op 12/01/2012 16:50:48 door Koh do
Zou je een klein voorbeeld je kunnen geven. want de voorbeelden die ik tegen ben gekomen geven alleen aan hoe ik mijn plaatje moet vergroten of verkleinen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
imagecopyresampled (
resource $dst_image ,
resource $src_image ,
int $dst_x ,
int $dst_y ,
int $src_x ,
int $src_y ,
int $dst_w ,
int $dst_h ,
int $src_w ,
int $src_h )
?>
imagecopyresampled (
resource $dst_image ,
resource $src_image ,
int $dst_x ,
int $dst_y ,
int $src_x ,
int $src_y ,
int $dst_w ,
int $dst_h ,
int $src_w ,
int $src_h )
?>
Er zijn dus twee image resources dst en src. Ofwel, dst is het nieuwe plaatje wat je gaat maken, src het plaatje wat je hebt.
Verder heb je van beide de coordinaten in het plaatje (x,y) en de grootte (w,h).
Als je nu dus een uitsnede wilt maken zonder de dimensies van die uitsnede te veranderen, bijvoorbeeld een vierkant met breedte 10, hoogte 10 en vanaf de coordinaten (100,200) dan doe je dat als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
imagecopyresampled (
resource $dst_image ,
resource $src_image ,
0 ,
0 ,
100 ,
200 ,
10 ,
10 ,
10 ,
10 )
?>
imagecopyresampled (
resource $dst_image ,
resource $src_image ,
0 ,
0 ,
100 ,
200 ,
10 ,
10 ,
10 ,
10 )
?>
Dus:
(0,0) zijn de coordinaten in het nieuwe plaatje waar de copy terecht komt
(100,200) zijn de coordinaten van het stukje dat je uitknipt
(10,10) zijn de breedte en hoogte in het nieuwe plaatje
(10,10) zijn de breedte en hoogte in het origineel
wow bedankt dat had ik zelf nooit op kunnen maken uit php.net ik ga er meteen mee aan de slag bedankt.
wanneer ik twee keer een deel uit een plaatje haal en deze wil echo-en op het scherm zie ik er maar 1. om te testen of ik zelf iets fout deed heb ik gewoon het voorbeeld op php.net gebrukt en deze twee keer onder elkaar gezet. maar het werkt nog steeds niet. doe ik iets fout?
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
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
<?php
// Create a blank image and add some text
$im1 = imagecreatetruecolor(120, 20);
$text_color1 = imagecolorallocate($im1, 233, 14, 91);
imagestring($im1, 1, 5, 5, 'A Simple Text String', $text_color1);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im1);
// Free up memory
imagedestroy($im1);
// Create a blank image and add some text
$im2 = imagecreatetruecolor(120, 20);
$text_color2 = imagecolorallocate($im2, 233, 14, 91);
imagestring($im2, 1, 5, 5, 'A Simple Text String', $text_color2);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im2);
// Free up memory
imagedestroy($im2);
?>
// Create a blank image and add some text
$im1 = imagecreatetruecolor(120, 20);
$text_color1 = imagecolorallocate($im1, 233, 14, 91);
imagestring($im1, 1, 5, 5, 'A Simple Text String', $text_color1);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im1);
// Free up memory
imagedestroy($im1);
// Create a blank image and add some text
$im2 = imagecreatetruecolor(120, 20);
$text_color2 = imagecolorallocate($im2, 233, 14, 91);
imagestring($im2, 1, 5, 5, 'A Simple Text String', $text_color2);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im2);
// Free up memory
imagedestroy($im2);
?>
Gewijzigd op 13/01/2012 19:01:42 door koh do
Dat komt (denk ik) omdat je niet twee keer de output op die manier naar het scherm kan schrijven.
Je kan zeker niet 2x een header verzenden
Erwin H op 13/01/2012 19:11:18:
Dat komt (denk ik) omdat je niet twee keer de output op die manier naar het scherm kan schrijven.
is er wel een andere manier, of moet je het opslaan? om het vervolgens weer te openen.
Wat wil je precies doen dan?
Je moet dat aanroepen vanuit een <img>.
Minuutje, ik update dit bericht direct met een voorbeeld.
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
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
<?php
// uiteraard zou je dit uit een database halen
// ... het is maar een voorbeeld ...
$image_color = array(
15 => array(233, 14, 91),
25 => array(14, 91, 233 )
);
/**/
if (isset($_GET['image'])) {
// hier gaan we de image creëren. De <img> zal die aanroepen
// Create a blank image and add some text
$im1 = imagecreatetruecolor(150, 20);
$text_color1 = imagecolorallocate($im1,
$image_color[$_GET['image']][0],
$image_color[$_GET['image']][1],
$image_color[$_GET['image']][2]
);
imagestring($im1, 1, 5, 5, 'A Simple Text String ' . (int) $_GET['image'], $text_color1);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im1);
// Free up memory
imagedestroy($im1);
}
else {
// de gewone pagina
echo '
<html>
<head>
</head>
<body>
<img src="?image=15"/> image met 15 <br/>
<img src="?image=25"/> image met 25 <br/>
</body>
</html>
';
}
?>
// uiteraard zou je dit uit een database halen
// ... het is maar een voorbeeld ...
$image_color = array(
15 => array(233, 14, 91),
25 => array(14, 91, 233 )
);
/**/
if (isset($_GET['image'])) {
// hier gaan we de image creëren. De <img> zal die aanroepen
// Create a blank image and add some text
$im1 = imagecreatetruecolor(150, 20);
$text_color1 = imagecolorallocate($im1,
$image_color[$_GET['image']][0],
$image_color[$_GET['image']][1],
$image_color[$_GET['image']][2]
);
imagestring($im1, 1, 5, 5, 'A Simple Text String ' . (int) $_GET['image'], $text_color1);
// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');
// Output the image
imagejpeg($im1);
// Free up memory
imagedestroy($im1);
}
else {
// de gewone pagina
echo '
<html>
<head>
</head>
<body>
<img src="?image=15"/> image met 15 <br/>
<img src="?image=25"/> image met 25 <br/>
</body>
</html>
';
}
?>
Gewijzigd op 13/01/2012 20:26:13 door Kris Peeters