Re: Dérapage image_reduire
JLuc <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Le 03/03/2020 à 08:21, Cerdic a écrit : > Cela dit : > 1/ je suis quand même tenté de passer à round parce que en effet c’est ce quand même ce qui produire la moins d’ecart > entre la dimension float calculée et la dimension int finale 2 fois moins exactement dans le pire des cas. > 2/ ton problème est purement un soucis de CSS, qui n’a rien à voir avec les images : il faut ajouter un clear sur la > 1ère image de chaque ligne, soit via le html, soit via la css si tu veux que ta mise en forme soit robuste, sinon ton > problème est susceptible de se reproduire dans tous les cas... Ce que tu décris me semble très rustique, car pas responsive. Mais peut être est-ce que je ne comprend pas. JL > Le 3 mars 2020 à 01:53 +0100, JLuc <[email protected]>, a écrit : >> Le 28/02/2020 à 08:05, Cerdic a écrit : >>> 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. >> >> Comme tu ne précises pas,je suppose que tu as testé avec scripts ou en tout cas dans le cas "carré" ? >> >> J'avais écarté cette manière de corriger avec -0.01 car certes ça règle le pb dans les >> valeurs testées actuellement, mais je m'étais dit que ça décalait l'erreur en fait : >> au lieu que l'arrondi dérape sur les valeurs entières >> c'est pour les valeurs "entières+0.01" que l'erreur d'arrondi sera fatal. >> Faudrait vérifier. >> >>> Maintenant j’hésites à mettre un round. >>> 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… >> >> 1px ça peut sembler chipotage >> mais dans les suites d'images de dimension identiques comme un portfolio, >> si une image a 1px de plus en hauteur, elle ne tient pas dans la ligne >> et ça décale tout le reste. >> Dans l'exemple donné https://core.spip.net/attachments/download/1140/screenshot.jpg >> c'est du bootstrap de base. >> >> D'ailleurs je suis étonné que ces irrégularités soit pas plus souvent signalées. >> >> JL >> >>> 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 >>> >> >> >> _______________________________________________ >> liste: https://listes.rezo.net/mailman/listinfo/spip-dev >> doc: https://www.spip.net/ >> dev: https://core.spip.net/ >> irc://irc.freenode.net/spip >