Re: Dérapage image_reduire

Cerdic <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <5d285841-cf56-4ae5-a11d-5fbcb439fe3b@Spark>
C’est vraiment une histoire d’arrondis car je viens de tester avec un patch de la forme
ceil($destWidth-0.01)
ceil($destHeight-0.01)

et ça corrige aussi toutes les erreurs.
Maintenant j’hésites à mettre un round.
Il faudrait retourner dans l’historique de ce morceau de code, mais il faudrait creuser profond j’ai peur :(

Je pense que l’idée c’est de pas créer une image trop petite quand on va appliquer les rescale derrière : il vaut mieux avoir 1 px de trop que 1px de moins
Maintenant si je fais une biblio rapide sur internet des pratiques, je trouve de tout : du ceil, du rien du tout (c’est osé), et du round.

Bref, soit on fix a minima avec le ceil corrigé pour les erreurs d’arrondi, soit on est fou et on prend le risque d’un round.

Cela dit probablement que l’enjeu est mineur entre les 2 car on manipule des images de plus en plus grandes, et un écart d’1px représente de moins en moins d’erreur relativement à la taille de l’image…

Si quelqu’un a un avis, qu’il parle maintenant ou se taise à jamais ! :p

--
Cédric
Le 27 févr. 2020 à 20:59 +0100, JLuc <[email protected]>, a écrit :
> Le 22/02/2020 à 09:45, JLuc a écrit :
> > Le 20/02/2020 à 14:23, JLuc a écrit :
> > > Le ticket https://core.spip.net/issues/4430 présente le problème :
> > > image_reduire{200,200} produit parfois des images de 201px de haut ce qui semble bien peu de différence
> > > mais fait déraper grave certaines mises en page : https://core.spip.net/attachments/download/1140/screenshot.jpg
> > >
> > > Le problème se situe au niveau de image_ratio qui,
> > > par exemple recevant (427x427) pour un ratio de 1:1 renvoie (200 x 201) !
> > >
> > > C'est à cause d'un ceil, qui fait déraper de 1.0000000000000000 le résultat de certains calculs
> > > en raison des précédentes conversions binaires <-> décimal.
> > >
> > > La solution proposée est simple : remplacer le le ceil par un round :
> > > - le round évite ces ripages aux conséquences si disgracieuses
> > > - l'erreur maximale d'arrondi avec round est de 0.5 alors qu'elle est de 1 avec ceil
> > >
> > > Cette correction peut elle être intégrée ?
> >
> > J'ai déposé sur https://contrib.spip.net/tester_image_ratio un programme de test
> > de _image_ratio avec ceil et avec round.
> >
> > On passe un argument debut par l’url et on teste toutes les valeurs entre debut et debut+100.
> > Chacune de ces valeurs $z va être sucessivement la dimension cible de _image_ratio
> > pour des valeurs d’entrées allant de $z à $z+100.
> > On teste à la fois la fonction qui utilise ceil ET sa version lorsqu'elle utilise round.
> >
> > Comme c’est un carré, le résultat doit être un carré aussi.
> > On compte les erreurs pour ceil et pour round : il y en a plein pour round.
> > Je n'en ai jamais trouvé pour round.
>
> Ceux qui ont lu auront corrigé : c'est pour "ceil" (= le code actuel) qu'il y a plein d'erreur ;
> et je n'en ai jamais trouvé pour round (= le fix).
>
>
> > Ça ne teste que les images carrées mais ça suffit à mon avis.
> >
> > Exemple : 29 d'erreurs pour la dimension cible 1000x1000 testée pour les dimensions d'entrées de 1000x1000 à 1100x1100
> >
> > JL
> >
> > _______________________________________________
> > liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> > doc: https://www.spip.net/
> > dev: https://core.spip.net/
> > irc://irc.freenode.net/spip
>
>
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: https://www.spip.net/
> dev: https://core.spip.net/
> irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.