Page 1 sur 2

Tester et comparer les proportions d'une image 4:3

Posté : 16 mars 2010, 17:45
par visualight
Salut,

J'ai un problème avec un code que j'essaye de faire pour tester si une image a une proportion carrée.
Voici ce que j'ai tenté de faire (et qui ne marche pas) => sachant que le ratio de l'image peut me renvoyer deux valeurs différentes.

En effet, si une image à une proportion carrée (paysage), le ratio me donnera la valeur : 1.33333333333. (ex.: 1024x768 => 1.33333333333)
Si une image à une proportion carrée (portrait), le ration me donnera la valeur : 0.75. (ex.: 768x1024 => 0.75)

$file_tmp = $_FILES['Filedata']['tmp_name'];
$file_size = getimagesize($file_tmp);

list($width, $height) = getimagesize($file_tmp);
$file_ratio = $width/$height;

if ($file_ratio !== 1.33333333333 OR $file_ratio !== 0.75) {
 $error = 'Upload interrompu => L\'image n\'a pas de proportions carrées';
}
L'ouput de l'éxécution lors de l'upload d'un fichier me sort toujours : Upload interrompu => L'image n'a pas de proportions carrées.
Donc la vérification de $file_ratio ne fonctionne pas ...

Pourquoi ?

Merci,
raph

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 17:48
par stealth35
pourquoi "carré" "rectangle plutot"

sinon pour t'as reponse
(4/3) !== 1.33333333333
donc met ( 4 / 3 )

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:10
par visualight
Salut,

Ce que j'aimerai faire c'est tester si la variable $file_ratio n'est pas égale à 1.33333333333 ou pas égale à 0.75.
Donc comparer si 4/3 !== 1.33333333333 ne me sert à rien, je dois comparer $file_ratio.

C'est sans aucun doute une bétise, mais je bloque ...

Merci,
raph

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:12
par stealth35
arf c'etait pour te dire que 4 / 3 n'était pas égale a 1.3333333333
donc de comparer ta valeur a 4 / 3
$file_ratio !==  (4 / 3)
#-o




:wink:

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:23
par visualight
OK, merci.

Mais comment je fais si mon image à une proportion carrée dans l'autre sens (ex.: 768 x 1024) ?
Le résultat obtenu au calcul du ratio est de 0.75.

Merci,
raph

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:25
par stealth35
ta mis 0.75 t'alleur donc c'est bon
if ($file_ratio  !== (4 / 3) || $file_ratio !==  0.75)
ou
if ($file_ratio  !== (4 / 3) || $file_ratio !==  (3 / 4))

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:33
par visualight
justement non.
J'ai essayé avec 0.75 et (3/4) => ca ne marche pas

if ($file_ratio !== (4/3) OR $file_ratio !== (3/4)) {}
if ($file_ratio !== (4/3) OR $file_ratio !== 0.75) {}

Les images uploadées qui ont une proportion de 4/3 (1.3333333333) passent mais pas celles qui ont une proportion de 3/4 (0.75).
Je ne comprend pas...

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:36
par stealth35
fait un
echo $file_ratio
pour etre sur

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 18:52
par visualight
Pour une image de 768x1024 un echo de la variable $file_ratio me sort bien 0.75 (donc 3/4).
Pourtant impossible d'uploader cette image.

Voici le code correspondant (copié/collé) :
$file_name = $_FILES['Filedata']['name'];
$file_size = getimagesize($file_tmp);
list($width, $height) = getimagesize($file_tmp);
$file_ratio = $width/$height;

if ($file_ratio !== (4 / 3) OR $file_ratio !== (3 / 4)) {
$error = 'Upload interrompu => L\'image n\'a pas de proportions carrées';
}
Je n'obtiens pas l'erreur renvoyée par $error lorsque l'image est en 4/3 (donc upload OK) par contre si une image est en 4/3 inversée (ex.: 768x1024) j'ai l'erreur qui apparait.

Je ne pige plus rien ...


Si quelqu'un a une idée ...

Merci,
raph

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:07
par stealth35
t'as essayer comme ca '||' a la place du OR, met bien tes parenthèses entre tes condition sinon
$file_ratio !== (4 / 3) || $file_ratio !==  (3 / 4)

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:35
par visualight
Salut,

Je viens d'essayer avec les "||" à la place de OR et rien n'y fait.
J'ai testé également simplement ceci :
if ($file_ratio !== (3 / 4)) {} ==> Ca marche
if ($file_ratio !== (4 / 3)) {} ==> Ca marche
Par contre tester les deux conditions en même temps ne fonctionne pas
if ($file_ratio !== (4 / 3) || $file_ratio !== (3 / 4)) {}  ==> ne marche pas
if ($file_ratio !== (4 / 3) OR $file_ratio !== (3 / 4)) {}  ==> ne marche pas
Il ne prend pas en compte le OR on dirais puisque en testant une par une ça marche ...

Je ne comprend pas, j'ai toujours testé mes variables comme ça (à peu près) et ça a toujours fonctionné.

Une idée ?
Raph

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:36
par stealth35
if (($file_ratio !== (4 / 3)) || ($file_ratio !== (3 / 4))) {}

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:40
par visualight
Ca non plus ça ne marche pas ...
if (($file_ratio !== (4 / 3)) || ($file_ratio !== (3 / 4))) {}
if (($file_ratio !== (4 / 3)) OR ($file_ratio !== (3 / 4))) {}
:( :( :(

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:50
par stealth35
en fait faut faire l'inverse
if(!(($file_ratio === (4 / 3)) || ($file_ratio  === (3 / 4))))
{
	echo 'error';
}

Re: Calculer si une image à une proportion carrée

Posté : 16 mars 2010, 19:52
par Calimero
Je pense que l'erreur (logique) vous saute tellement au visage que vous ne la voyez pas 8-)

visualight, tu peux me lire à haute voix (ou juste écrire :) ) la condition de ce if() en bon français stp ? (et te poser au passage, de manière logique, la question de savoir s'il correspond bien à ce qu'il est censé faire ou non.).

EDIT : stealth35 a vu le truc. Soit tu inverses le sens du test avec l'opérateur de négation (!), soit tu remplaces le || (ou) par un && (et).

PS : c'est moi ou il y a une grosse différence entre le fait de filtrer uniquement une image carrée (ratio 1 donc, titre du post), et le fait d'exclure seulement les images qui sont soit au ratio 4/3 soit au ratio 3/4 ?