Libvips: `auto_rotate` ne fonctionne pas comme prévu. L'image traitée est mal tournée.

Créé le 19 mai 2019  ·  4Commentaires  ·  Source: libvips/libvips

J'essaie de traiter une image prise par spécifiquement S9+ . L'image semble normale sous Windows. Je transfère cette image vers Linux ( Debian ) et traite via ruby . La sortie est toujours tournée à 90 degrés. Il doit tourner correctement de la même manière que l'entrée. :autorotate clé

Exemple d'image : 20190519_225024.zip

_Sample a une clé USB horizontale ._

Veuillez également consulter notre discussion ici : https://github.com/janko/image_processing/issues/52

Cependant, j'ai exécuté le même script sous Windows avec libvips 8.6.4, la sortie est correcte. J'obtiens une rotation correcte. Identique à l'entrée.

J'ai aussi fait un dernier test. Exécutez le script sous Linux, puis copiez le fichier de sortie sur Windows et je vois qu'ils sont mal tournés.

Le serveur Linux a libvips 8.7.4 . Également installé 8.8.0-rc3 récemment. Les deux ont le même comportement.

De plus, @janko confirme que cela fonctionne également sur Mac.

Quel peut être le problème ?

_Je me réveillais sur Golang auparavant, lorsque je télécharge et traite de telles images (comme celle ci-jointe), j'obtiens toujours le bon résultat avec :autorotate . Mais pas cette fois sur ruby_

Scénario :

require "vips"

file_path = "./20190518_094223.jpeg"

Vips::Image
  .new_from_file(file_path, autorotate: true)
  .write_to_file("autorotated_1.png")

Vips::Image
  .new_from_file(file_path)
  .autorot
  .write_to_file("autorotated_2.png")

Vips::Image
  .jpegload(file_path, autorotate: true)
  .write_to_file("autorotated_3.png")

Vips::Image
  .thumbnail(file_path, size, height: size)
  .write_to_file("autorotated_4.png")

Vips::Image
  .thumbnail(file_path, size, height: size, auto_rotate: true)
  .write_to_file("autorotated_5.png")

Mettre à jour:

J'ouvre cette image avec mspaint , trace une ligne au hasard. Je l'ai sauvé. Puis traité avec le script ci-dessus et la sortie est correcte . C'est vraiment bizarre.

question

Commentaire le plus utile

Depuis que je vois votre réponse, je ne peux pas arrêter de rire de moi-même. Comment j'ai raté ça !

Oui, libexif-dev n'est pas installé sur la machine...

Problème résolu en reconstruisant avec libexif-dev .

(Sérieusement, comment ai-je raté ça)

Merci!

Tous les 4 commentaires

Bonjour @gencer ,

Juste une supposition, mais vos libvips sur Debian auraient-ils pu être construits sans libexif ?

Sans la prise en charge d'exif, libvips ne pourra pas voir la balise d'orientation sur l'image et ne la fera pas pivoter.

Pour tester, essayez de lire la balise d'orientation sur la ligne de commande, par exemple.

$ vipsheader -f orientation ~/pics/Portrait_6.jpg 
6

Depuis que je vois votre réponse, je ne peux pas arrêter de rire de moi-même. Comment j'ai raté ça !

Oui, libexif-dev n'est pas installé sur la machine...

Problème résolu en reconstruisant avec libexif-dev .

(Sérieusement, comment ai-je raté ça)

Merci!

Content que ça marche maintenant !

Cette page vous a été utile?
0 / 5 - 0 notes