Afbeelding inzoomen
Ik een plaatje uitvergroten, maar alleen maar een deel van een plaatje.
Dus bijvoorbeeld x=20 tot x=40 (van het plaatje).
Het uitvergroten lukt met: http://nl2.php.net/image_copy_resampled.
Maar hoe vergroot ik nou alleen een bepaald deel?
Mijn leraar zei met SVG, is dat de beste manier?(waarschijnlijk wel anders zegt hij het niet) maar als er ook een manier met php is of javascript is dat makkelijker anders moet ik helemaal nieuwe taal gaan leren..
Groeten Vincent
http://phphulp.nl/php/scripts/9/390/ een beetje aanpast is heb je het. Ik heb het voor mijn eigen site zo gedaan:
Voorbeeld: http://gtaweb.nl/Nieuwe%20map/spoorkaart.php?page=map.php&x=40&y=20&k=1&v=v
Als je dit script: 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
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
<?PHP
// config
// cfg -------------
$cfg['width'] = '300'; // breedte van het vlak
$cfg['height'] = '300'; // hoogte van het vlak
$cfg['pl'] = 'Hier het plaatje'; // het plaatje
$cfg['stap'] = '150'; // pixels perkeer
$cfg['klein'] = '1'; // 1 voor wel miniatuur en 0 voor niet
$cfg['z'] = '0.5'; // Per keer uitzoomen
//---------------------------------------------- alle functies
class func {
// inladen
function res($filename){ // van img2pix
if(@imagecreatefromjpeg($filename)){
return imagecreatefromjpeg($filename);
}
elseif(@imagecreatefromgif($filename)){
return imagecreatefromgif($filename);
}
elseif(@imagecreatefrompng($filename)){
return imagecreatefrompng($filename);
}
elseif(@imagecreatefromwbmp($filename)){
return imagecreatefromwbmp($filename);
}
}
function size($pl) {
$siz = getimagesize($pl);
return $siz;
}
//------------ zoom
function map($pl,$w,$h,$x1,$y1,$keer,$s) {
$xas = ($keer >1) ? $x1-(($w/2)*($keer-1)) : $x1; // stomme () :P
$yas = ($keer >1) ? $y1-(($h/2)*($keer-1)) : $y1;
$siz = $this->size($pl);
$ima = $this->res($pl);
$im = imagecreatetruecolor($w,$h);
$bg = imagecolorallocate($im,255,255,255);
$image = imagecopyresized($im,$ima,0,0,$xas,$yas,$w,$h,($w*$keer),($h*$keer));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
imagedestroy($ima);
}
function mini($pl,$x1,$y1,$w1,$h1,$k) {
$x = ($k >1) ? $x1-(($w1/2)*($k-1)) : $x1;
$y = ($k >1) ? $y1-(($h1/2)*($k-1)) : $y1;
$h = $h1*$k;
$w = $w1*$k;
$ima = $this->res($pl);
$siz = $this->size($pl);
$g = ($siz[0] > 1000 || $siz[1] > 1000) ? 10 : 5;
$wid = round($siz[0]/$g,0);
$hei = round($siz[1]/$g,0);
//---------------------------------
$img = imagecreatetruecolor($wid,$hei);
imagecopyresampled($img,$ima,0,0,0,0,$wid,$hei,$siz[0],$siz[1]);
$color1 =imagecolorallocate($img,255,119,1);
imagerectangle($img,round($x/$g,0),round($y/$g,0),round(($x+$w)/$g,0),round(($y+$h)/$g,0),$color1);
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
}
//einde class
}
$data = new func;
?>
// config
// cfg -------------
$cfg['width'] = '300'; // breedte van het vlak
$cfg['height'] = '300'; // hoogte van het vlak
$cfg['pl'] = 'Hier het plaatje'; // het plaatje
$cfg['stap'] = '150'; // pixels perkeer
$cfg['klein'] = '1'; // 1 voor wel miniatuur en 0 voor niet
$cfg['z'] = '0.5'; // Per keer uitzoomen
//---------------------------------------------- alle functies
class func {
// inladen
function res($filename){ // van img2pix
if(@imagecreatefromjpeg($filename)){
return imagecreatefromjpeg($filename);
}
elseif(@imagecreatefromgif($filename)){
return imagecreatefromgif($filename);
}
elseif(@imagecreatefrompng($filename)){
return imagecreatefrompng($filename);
}
elseif(@imagecreatefromwbmp($filename)){
return imagecreatefromwbmp($filename);
}
}
function size($pl) {
$siz = getimagesize($pl);
return $siz;
}
//------------ zoom
function map($pl,$w,$h,$x1,$y1,$keer,$s) {
$xas = ($keer >1) ? $x1-(($w/2)*($keer-1)) : $x1; // stomme () :P
$yas = ($keer >1) ? $y1-(($h/2)*($keer-1)) : $y1;
$siz = $this->size($pl);
$ima = $this->res($pl);
$im = imagecreatetruecolor($w,$h);
$bg = imagecolorallocate($im,255,255,255);
$image = imagecopyresized($im,$ima,0,0,$xas,$yas,$w,$h,($w*$keer),($h*$keer));
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
imagedestroy($ima);
}
function mini($pl,$x1,$y1,$w1,$h1,$k) {
$x = ($k >1) ? $x1-(($w1/2)*($k-1)) : $x1;
$y = ($k >1) ? $y1-(($h1/2)*($k-1)) : $y1;
$h = $h1*$k;
$w = $w1*$k;
$ima = $this->res($pl);
$siz = $this->size($pl);
$g = ($siz[0] > 1000 || $siz[1] > 1000) ? 10 : 5;
$wid = round($siz[0]/$g,0);
$hei = round($siz[1]/$g,0);
//---------------------------------
$img = imagecreatetruecolor($wid,$hei);
imagecopyresampled($img,$ima,0,0,0,0,$wid,$hei,$siz[0],$siz[1]);
$color1 =imagecolorallocate($img,255,119,1);
imagerectangle($img,round($x/$g,0),round($y/$g,0),round(($x+$w)/$g,0),round(($y+$h)/$g,0),$color1);
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
}
//einde class
}
$data = new func;
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if (isset($_GET['page']))
{
if($_GET['page']=='map.php'){
$siz = $data->size($cfg['pl']);
$x = (isset($_GET['x']) && $_GET['x'] >= 0 && ($_GET['x']+$cfg['stap']) <= $siz[0]) ? $_GET['x'] : '0';
$y = (isset($_GET['y']) && $_GET['y'] >= 0 && ($_GET['y']+$cfg['stap']) <= $siz[1]) ? $_GET['y'] : '0';
$k = (isset($_GET['k']) && $_GET['k'] >0) ? $_GET['k'] : '1';
if(is_numeric($_GET['k']) && is_numeric($_GET['x']) && is_numeric($_GET['y']) && $_GET['v'] == 'v') {
$data->map($cfg['pl'],$cfg['width'],$cfg['height'],$x,$y,$k,$cfg['stap']);
} elseif(is_numeric($_GET['k']) && is_numeric($_GET['x']) && is_numeric($_GET['y']) && $_GET['v'] == 'k' && $cfg['klein'] == 1) {
$data->mini($cfg['pl'],$x,$y,$cfg['width'],$cfg['height'],$k);
}
}
}
?>
if (isset($_GET['page']))
{
if($_GET['page']=='map.php'){
$siz = $data->size($cfg['pl']);
$x = (isset($_GET['x']) && $_GET['x'] >= 0 && ($_GET['x']+$cfg['stap']) <= $siz[0]) ? $_GET['x'] : '0';
$y = (isset($_GET['y']) && $_GET['y'] >= 0 && ($_GET['y']+$cfg['stap']) <= $siz[1]) ? $_GET['y'] : '0';
$k = (isset($_GET['k']) && $_GET['k'] >0) ? $_GET['k'] : '1';
if(is_numeric($_GET['k']) && is_numeric($_GET['x']) && is_numeric($_GET['y']) && $_GET['v'] == 'v') {
$data->map($cfg['pl'],$cfg['width'],$cfg['height'],$x,$y,$k,$cfg['stap']);
} elseif(is_numeric($_GET['k']) && is_numeric($_GET['x']) && is_numeric($_GET['y']) && $_GET['v'] == 'k' && $cfg['klein'] == 1) {
$data->mini($cfg['pl'],$x,$y,$cfg['width'],$cfg['height'],$k);
}
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?PHP
$siz = getimagesize($cfg['pl']);
$x = (isset($_GET['x']) && $_GET['x'] >= 0 && ($_GET['x']+$cfg['stap']) <= $siz[0]) ? $_GET['x'] : 0;
$y = (isset($_GET['y']) && $_GET['y'] >= 0 && ($_GET['y']+$cfg['stap']) <= $siz[1]) ? $_GET['y'] : 0;
$k = (isset($_GET['k']) && $_GET['k'] >0) ? $_GET['k'] : 1;
$s = $cfg['stap']*$k;
$ke = ($k-1 >= 1) ? $k-$cfg['z'] : 1;
$minx = ($x <=0 || ($x-$S) <= 0) ? 0 : ($x-$s);
$plux = ($x > $siz[0] || ($x+$s) > $siz[0]) ? $x : ($x+$s);
$miny = ($y <=0 || ($y-$S) <= 0) ? 0 : ($y-$s);
$pluy = ($y > $siz[1] || ($y+$s) > $siz[1]) ? $y : ($y+$s);
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// form
// opmaak
echo "<img src='".$_SERVER['PHP_SELF']."?page=map.php&x=40&y=20&k=".$k."&v=v' width='300' height='300' alt='Map'/>";
?>
$siz = getimagesize($cfg['pl']);
$x = (isset($_GET['x']) && $_GET['x'] >= 0 && ($_GET['x']+$cfg['stap']) <= $siz[0]) ? $_GET['x'] : 0;
$y = (isset($_GET['y']) && $_GET['y'] >= 0 && ($_GET['y']+$cfg['stap']) <= $siz[1]) ? $_GET['y'] : 0;
$k = (isset($_GET['k']) && $_GET['k'] >0) ? $_GET['k'] : 1;
$s = $cfg['stap']*$k;
$ke = ($k-1 >= 1) ? $k-$cfg['z'] : 1;
$minx = ($x <=0 || ($x-$S) <= 0) ? 0 : ($x-$s);
$plux = ($x > $siz[0] || ($x+$s) > $siz[0]) ? $x : ($x+$s);
$miny = ($y <=0 || ($y-$S) <= 0) ? 0 : ($y-$s);
$pluy = ($y > $siz[1] || ($y+$s) > $siz[1]) ? $y : ($y+$s);
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// form
// opmaak
echo "<img src='".$_SERVER['PHP_SELF']."?page=map.php&x=40&y=20&k=".$k."&v=v' width='300' height='300' alt='Map'/>";
?>
Voorbeeld: http://gtaweb.nl/Nieuwe%20map/spoorkaart.php?page=map.php&x=40&y=20&k=1&v=v
Die had ik nog niet gezien!
Bedankt voor je reactie :-)
En trouwens: Welkom op phphulp.nl!