<?php

class Image {

    public static function getRatio($file) {
	list($width, $height, $type, $attr) = getimagesize($_SERVER['DOCUMENT_ROOT'] . $file);
	if (function_exists("gmp_gcd")) {
	    $gcd = gmp_gcd($width, $height);
	    $ratio = ($width / $gcd) . ':' . ($height / $gcd);
	    $array = array('16:9', '4:3', '3:2', '7:5', '10:8');

	    if (in_array($ratio, $array)) {
		return $ratio;
	    } else {
		return "Onbekend";
	    }
	} else {
	    return "n/a";
	}
    }

}
?>

Vanavond een prachtige class gebouwd.
Echter blijkt gmp_gcd() niet overal te werken, omdat het niet altijd geïnstalleerd is.
Dat kan ik uiteraard wel doen, maar zijn er nog andere truukjes om de verhouding te achterhalen aan de hand van de ingevoerde dimensies?
Maar je hebt dus helemaal geen staande foto's, alleen maar liggende?

Anders kun je zoiets doen als:
<?php
// $width = ...;
// $height = ...;

$max = max($width, $height);
$min = min($width, $height);

$gcd = gcd($max, $min);
$ratio = ($max/$gcd).':'.($min/$gcd);
?>

Of de foto nu staand of liggend is maakt dan niet uit. Misschien is het dus ook handig om een flag "portrait" te hebben, als deze true is, dan weet je dus dat je de ratio moet omdraaien (3:4 ipv 4:3). Als dat zelfs relevant zou zijn.
Ik heb ook enkele staande foto's. Weliswaar niet geschikt voor ankeilers, maar wel noemenswaardig voor in het CMS-systeem. Ik zal hier rekening mee houden.

Reageren