Beste Tweakers!
Al een aantal dagen zit ik meer een aantal vreselijke irritante probleempjes met imagemagick via PHP. Het eerste probleem: wanneer een afbeelding moet worden gecropt maar de afmetingen vallen buiten de afbeelding wordt de afbeelding uit verhouding gehaald.
zorgt er dus voor dat de afbeelding wordt weg- geknipt. Maar er verdwijnt een deel (wat best logisch is). Is het mogelijk om het overige op te vullen met bijvoorbeeld een achtergrond kleur ?
Daarnaast zit ik ook nog met het zoomen, Hoe kan ik er voor zorgen dat er op een bepaald zoom niveau de afbeelding word uitgesneden? Het is de geboeling hoe verder er hoe groter de afbeelding is. Maar de verhouding moet wel het zelfde blijven. (iemand een hint hoe je dat berekend met het bovenstaande stukje code?)
Dit is hoe ik het nu doe en hoe het niet moet
Al een aantal dagen zit ik meer een aantal vreselijke irritante probleempjes met imagemagick via PHP. Het eerste probleem: wanneer een afbeelding moet worden gecropt maar de afmetingen vallen buiten de afbeelding wordt de afbeelding uit verhouding gehaald.
code:
1
| convert tmp/build-r.png -crop 568x347+-264+231 tmp/build-c.png |
zorgt er dus voor dat de afbeelding wordt weg- geknipt. Maar er verdwijnt een deel (wat best logisch is). Is het mogelijk om het overige op te vullen met bijvoorbeeld een achtergrond kleur ?
Daarnaast zit ik ook nog met het zoomen, Hoe kan ik er voor zorgen dat er op een bepaald zoom niveau de afbeelding word uitgesneden? Het is de geboeling hoe verder er hoe groter de afbeelding is. Maar de verhouding moet wel het zelfde blijven. (iemand een hint hoe je dat berekend met het bovenstaande stukje code?)
Dit is hoe ik het nu doe en hoe het niet moet
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
| <?php $data = json_decode(file_get_contents('http://preview.zdev.nl/am/data.php'), true); $imgd = file_get_contents('http://preview.zdev.nl/am/' . $data['filename']); file_put_contents('tmp/img.jpg', $imgd); $cropStartX = $data['fullwidth'] - $data['imgposx']; $cropStartY = $data['fullheight'] - $data['imgposy']; ////////////////////////////////////////////////// $im['img'] = 'tmp/img.jpg'; $im['ext'] = 'jpg'; $im['rot'] = $data['imgrot']; $im['sze'] = [$data['fullwidth'], $data['fullheight']]; $im['zom'] = 2.0 - $data['imgzoom']; $im['cra'] = [$data['fullwidth'] - ($data['imgposx'] * $im['zom']), $data['fullheight'] - ($data['imgposy'] * $im['zom'])]; $im['crb'] = [568, 347]; // Grootte van het html5 canvas. /// 1] Copy the image copy($im['img'], 'tmp/build.' . $im['ext']); /// 2] Convert to PNG exec('convert tmp/build.' . $im['ext'] . ' tmp/build.png'); /// 3] Rotate the image exec('convert tmp/build.png -background "rgba(0,0,0,0)" -rotate ' . $im['rot'] . ' tmp/build-r.png'); /// 4] Crop the image exec('convert tmp/build-r.png -crop ' . $im['crb'][0] . 'x' . $im['crb'][1] . '+' . $im['cra'][0]. '+' . $im['cra'][1]. ' tmp/build-c.png'); ////////////////////////////////////////////////// echo '<img src="tmp/build-c.png"><pre>' . print_r($data, true) . print_r($im, true) . '</pre>'; |

