verhouding van weergave op afbeelding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gijs Jansen

Gijs Jansen

11/03/2017 14:33:02
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

14/05/2024 00:12:28
 
Adoptive Solution

Adoptive Solution

11/03/2017 16:00:24
 
Shamrock Modelbouw

Shamrock Modelbouw

11/03/2017 16:08:58
Quote Anchor link
Als je alleen wil weten hoe groot het object binnen je png is zou je dit met de volgende code kunnen doen (snel gemaakt).

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>
Gewijzigd op 11/03/2017 16:17:18 door Shamrock Modelbouw
 
Gijs Jansen

Gijs Jansen

12/03/2017 11:34:49
Quote Anchor link
@Shamrock, bedankt voor je oplossing. Dit is precies wat ik nodig had. Het is trouwens voor product foto's. Ik wil kunnen bepalen welke verhouding een product heeft. Dit bepaald namelijk ook de prijs. De afbeeldingen zijn relatief klein. Geen idee hoe lang hij zo meteen bezig is als hij 2000 afbeeldingen moet 'screenen' maar zal iig sneller en leuker zijn dan zelf meten.

@adoptive. Bedankt voor de link :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.