Vérifier qu'une image est proportionnelle a des dimensions données

Il peut arriver que vous ayez besoin de vérifier qu'un fichier ai des dimensions proportionnelles à d'autres. Dans le cas de création de miniatures par exemple si vous ne voulez pas déformer l'image finale.

Démarche mathématique

Pour vérifier que deux paires de chiffres sont proportionnelles entre elles, il suffit de comparer le résultat de leur rapport.
exemple:

Le couple (800,600) est t'il proportionnel au couple (4,3)?
oui car
(800/600)=1,3333333 et (4/3)=1,3333333
donc (800/600)=(4/3)

La fonction

Il ne reste plus qu'à creer la fonction php correspondante.

php
function isSizeOk($myFile,$height,$width,$precision) {
	$size=GetImageSize($myFile);
	if (round($size[0]/$size[1],$precision)==round($width/$height,$precision)) {
		return true;
	}
	else {
		return false;
	}
}

Utilisation

$myFile est le chemin vers votre fichier image.
$height est la hauteur par rapport à laquelle la hauteur de votre image sera comparée.
$width est la largeur par rapport à laquelle la largeur de votre image sera comparée.
$precision permet de rendre plus fléxible cette fonction en autorisant les arrondis. (plus la valeur de $precision est petite plus la fonction sera flexible).
La fonction retournera true si l'image est proportionnelle aux dimensions que vous aurez indiquées dans $width et $height.

La flexibilité vous permettra d'autoriser les valeurs “presque” proportionnelles aux valeurs que vous avez définies (dans $height et $width). Cela vous permettra par exemple d'autoriser les images en 267×200, qui sont à quelques pixels près, proportionnelles à une image en 800×600. (Dans le cas de la création de miniature au format 80×60, refuser des images en 267×200 serait dommage car le rendu final sera identique à des images en 800×600 ou 400×300).


09/01/2007 10:39 -

ManiT4c
Gérant et chef de projet de l'agence web Op'art, je suis également webmaster freelance. Retrouvez moi également sur twitter.