Skip to content Skip to sidebar Skip to footer

Get Aspect Ratio From Width And Height Of Image (php Or Js)

I can't believe I can't find the formula for this. I am using a PHP script called SLIR to resize images. The script asks to specify an aspect ratio for cropping. I'd like to get th

Solution 1:

If you can get one of: height, width then you can calculate the missing width height:

original width * new height / original height = new width;

original height * new width / original width = new height;

Or if you just want a ratio:

original width / original height = ratio

Solution 2:

to get the aspect ratio just simplify the width and height like a fraction for example:

1024      4
----  =  ---
768       3

the php code:

function gcd($a, $b)
{
    if ($a==0||$b==0)
        returnabs( max(abs($a), abs($b)) );

    $r=$a%$b;
    return ($r!=0) ?
        gcd($b, $r) :
        abs($b);
}

  $gcd=gcd(1024,768);

  echo "Aspect ratio = ". (1024/$gcd) . ":" . (768/$gcd);

Solution 3:

Here's a much simpler alternative for greatest common divisor integer ratios:

functionratio($x, $y){
    $gcd = gmp_strval(gmp_gcd($x, $y));
    return ($x/$gcd).':'.($y/$gcd);
}

The request echo ratio(25,5); returns 5:1.

If your server wasn't compiled with GMP functions ...

functiongcd($a, $b){
    return ($a % $b) ? gcd($b,$a % $b) : $b;
}
functionratio($x, $y){
    $gcd = gcd($x, $y);
    return ($x/$gcd).':'.($y/$gcd);
}

Solution 4:

There is no need for you to do any kind of calculation.

Just because it says aspect ratio doesn't mean it has to be one of a limited set of commonly used ratios. It can be any pair of numbers separated by a colon.

Quoting from the SLIR usage guide:

For example, if you want your image to be exactly 150 pixels wide by 100 pixels high, you could do this:

<imgsrc="/slir/w150-h100-c150:100/path/to/image.jpg"alt="Don't forget your alt text" />

Or, more concisely:

<imgsrc="/slir/w150-h100-c15:10/path/to/image.jpg"alt="Don't forget your alt text" />

Note that they didn't bother to reduce that even further to c3:2.

So, simply use the values as entered by the user: 1024:768.

If you want to be concise, calculate the greatest common divisor of the width and height and divide both of them by that. That would reduce your 1024:768 down to 4:3.

Post a Comment for "Get Aspect Ratio From Width And Height Of Image (php Or Js)"