Bug dans la créations de vignettes #4942

Closed
opened 1 year ago by MathieuAlphamosa · 4 comments

Le problème arrive dans un cas très particulier :

  • je veux une vignette dans la même taille que l'image initiale
  • je veux que cette vignette soit dans un format différent (WebP par exemple alors que l'image intiale est un JPG).

Dans ce cas là la fonction _image_creer_vignette va simplement recopier l'image initiale en lui changeant l'extension...
Le problème ce situe ici :
https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres_images_lib_mini.php#L1417
Sauf erreure de ma part le test
if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {
devrait être
if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight and $format == $format_sortie) {

Le problème arrive dans un cas très particulier : - je veux une vignette dans la même taille que l'image initiale - je veux que cette vignette soit dans un format différent (WebP par exemple alors que l'image intiale est un JPG). Dans ce cas là la fonction `_image_creer_vignette` va simplement recopier l'image initiale en lui changeant l'extension... Le problème ce situe ici : https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres_images_lib_mini.php#L1417 Sauf erreure de ma part le test `if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight) {` devrait être `if ($srcWidth and $srcWidth <= $maxWidth and $srcHeight <= $maxHeight and $format == $format_sortie) {`
b_b commented 1 year ago
Owner

Version cible ?

Version cible ?
Owner

La fonction _image_creer_vignette est une fonction à usage interne, pas une fonction publique.

Ça fait partie de sa spec que de renvoyer l'image initiale si sa taille est déjà inférieure ou égale aux dimensions demandées. Sur la ligne que tu pointe on utilise $format qui est le format d'origine, l'image ne va donc pas changer d'extension.

Et dans tous les cas d'ailleurs, l'image produite par cette fonction conserve le format d'origine, cf
https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres_images_lib_mini.php#L1627

Si tu veux imposer un format, il faut utiliser la fonction image_format (ou directement image_aplatir avec les bonnes options)

La fonction `_image_creer_vignette` est une fonction à usage interne, pas une fonction publique. Ça fait partie de sa spec que de renvoyer l'image initiale si sa taille est déjà inférieure ou égale aux dimensions demandées. Sur la ligne que tu pointe on utilise `$format` qui est le format d'origine, l'image ne va donc pas changer d'extension. Et dans tous les cas d'ailleurs, l'image produite par cette fonction conserve le format d'origine, cf https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres_images_lib_mini.php#L1627 Si tu veux imposer un format, il faut utiliser la fonction `image_format` (ou directement `image_aplatir` avec les bonnes options)
b_b added the
refusé
label 1 year ago
b_b added this to the 4.0 milestone 1 year ago
b_b commented 1 year ago
Owner

On ferme donc :)

On ferme donc :)
b_b closed this issue 1 year ago

Tu as totalement raison cerdic, je devrais éviter d'utiliser _image_creer_vignette et passer par image_aplatir. Désolé pour le dérangement.

Tu as totalement raison cerdic, je devrais éviter d'utiliser `_image_creer_vignette` et passer par `image_aplatir`. Désolé pour le dérangement.
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.