verhouding van weergave op afbeelding
Ik heb meerder transparante png bestanden. Per afbeelding staat er een dier op in het zwart. De afbeelding in zijn geheel is bijvoorbeeld 500px bij 500px. Maar het getoonde dier in de afbeelding heeft een andere verhouding. Bijvoorbeeld 200px breed en 400px hoog. Is er een manier om via php te bepalen hoe hoog en breed het zwarte gedeelte in de png is?
Vast bedankt voor de reacties.
Groeten,
Gijs
Het is niet snel aangezien ik alle pixels naloop. Ik weet niet precies waarom je het nodig hebt, maar als het om kleine afbeeldingen gaat en niet om veel is het te gebruiken:
Wijzig $image even naar je afbeelding en je krijgt een array met het object grootte terug.
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
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
<?PHP
$image = "afbeelding.png";
$image_temp = imagecreatefrompng($image);
list($width, $height, $type, $attr) = getimagesize($image);
$dimensions['xStart'] = $width;
$dimensions['yStart'] = $height;
$dimensions['xStop'] = null;
$dimensions['yStop'] = null;
for($y = 0; $y < $height; $y++)
{
for($x = 0; $x < $width; $x++)
{
$rgb = imagecolorat($image_temp, $x, $y);
$colors = imagecolorsforindex($image_temp, $rgb);
if($colors['alpha'] == 0)
{
if($x < $dimensions['xStart'])
{
$dimensions['xStart'] = ($x - 1);
}
if($y < $dimensions['yStart'])
{
$dimensions['yStart'] = ($y - 1);
}
if($x > $dimensions['xStop'])
{
$dimensions['xStop'] = ($x + 1);
}
if($y > $dimensions['yStop'])
{
$dimensions['yStop'] = ($y + 1);
}
}
}
}
$object['width'] = ($dimensions['xStop'] == null ? $width : $dimensions['xStop']) - $dimensions['xStart'];
$object['height'] = ($dimensions['yStop'] == null ? $height : $dimensions['yStop']) - $dimensions['yStart'];
print_r($object);
?>
$image = "afbeelding.png";
$image_temp = imagecreatefrompng($image);
list($width, $height, $type, $attr) = getimagesize($image);
$dimensions['xStart'] = $width;
$dimensions['yStart'] = $height;
$dimensions['xStop'] = null;
$dimensions['yStop'] = null;
for($y = 0; $y < $height; $y++)
{
for($x = 0; $x < $width; $x++)
{
$rgb = imagecolorat($image_temp, $x, $y);
$colors = imagecolorsforindex($image_temp, $rgb);
if($colors['alpha'] == 0)
{
if($x < $dimensions['xStart'])
{
$dimensions['xStart'] = ($x - 1);
}
if($y < $dimensions['yStart'])
{
$dimensions['yStart'] = ($y - 1);
}
if($x > $dimensions['xStop'])
{
$dimensions['xStop'] = ($x + 1);
}
if($y > $dimensions['yStop'])
{
$dimensions['yStop'] = ($y + 1);
}
}
}
}
$object['width'] = ($dimensions['xStop'] == null ? $width : $dimensions['xStop']) - $dimensions['xStart'];
$object['height'] = ($dimensions['yStop'] == null ? $height : $dimensions['yStop']) - $dimensions['yStart'];
print_r($object);
?>
Gewijzigd op 11/03/2017 16:17:18 door Shamrock Modelbouw
@adoptive. Bedankt voor de link :)