Hallo Tweakers,
Ik maak al een geruime tijd gebruik van imageick, Alleen wil ik nu een afbeelding snijden met negatieve waardes.
bijv, $img->cropImage(450, 450, $node['left'], $node['top']);
450 x 450 moet de groote worden van de afbeelding. de nodes left en top is dus de positie. Alles gaat goed totdat ik waardes ga gebruiken die onder de 0 komen, dan word de afbeelding niet 450 bij 450 meer. Maar word de afbeelding kleiner. Is er een manier om alsnog hetgene op te vullen met wit ? Zodat de afbeelding toch 450 x 450 px word ?
Dit is wat ik al gemaakt heb, heb echter totaal geen idee hoe ik dit zou kunnen oplossen.
Ik maak al een geruime tijd gebruik van imageick, Alleen wil ik nu een afbeelding snijden met negatieve waardes.
bijv, $img->cropImage(450, 450, $node['left'], $node['top']);
450 x 450 moet de groote worden van de afbeelding. de nodes left en top is dus de positie. Alles gaat goed totdat ik waardes ga gebruiken die onder de 0 komen, dan word de afbeelding niet 450 bij 450 meer. Maar word de afbeelding kleiner. Is er een manier om alsnog hetgene op te vullen met wit ? Zodat de afbeelding toch 450 x 450 px word ?
Dit is wat ik al gemaakt heb, heb echter totaal geen idee hoe ik dit zou kunnen oplossen.
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
| <?php require_once '../core.php'; function filecheck($file){ return (file_exists($file) && is_file($file) && !is_dir($file)); } function msgError($err){ echo $err; exit(); } if(!isset($_SESSION['designer']['img']) && count($_SESSION['designer']['img']) == 0){ echo 'ERROR, Invalid render settings.'; exit(); } //$_SESSION['designer']['ready'][$node['product']] = array(); $iii=0; foreach($_SESSION['designer']['img'] as $node){ if(!filecheck('../../'.$node['design'])) msgError('Kan afbeelding niet laden (DESIGN)'.'../../'.$node['design']); if(!filecheck('../../'.$node['img_show'])) msgError('Kan afbeelding niet laden (VIEW)'.'../../'.$node['img_show']); if(!filecheck('../../'.$node['img_mask'])) msgError('Kan afbeelding niet laden (MASK)'.'../../'.$node['img_mask']); $img = new Imagick('../../'.$node['design']); $msk = new Imagick('../../'.$node['img_mask']); $img->setImageMatte(1); if($node['zoom'] != 100){ $d = $img->getImageGeometry(); $scaling = array( 0 => (($d['width'] / 100) * $node['zoom']), 1 => (($d['height'] / 100) * $node['zoom']) ); $img->scaleImage($scaling[0], $scaling[1]); } $img->cropImage(450, 450, $node['left'], $node['top']); $img->compositeImage($msk, 4, 0, 0); do{ $filename = './designscript/designs/render/'.md5(rand(0,9999999)).'.png'; } while(file_exists('../../'.$filename)); $_SESSION['designer']['ready'][$node['product']][$iii] = $filename; file_put_contents('../../'.$filename, $img); $iii++; $img->destroy(); $msk->destroy(); } echo 'OK'; ?> |