Libvips: `auto_rotate` funktioniert nicht wie erwartet. Das verarbeitete Bild ist falsch gedreht.

Erstellt am 19. Mai 2019  ·  4Kommentare  ·  Quelle: libvips/libvips

Ich versuche, ein Bild zu verarbeiten, das speziell von S9+ . Das Bild sieht unter Windows normal aus. Ich übertrage dieses Image nach Linux ( Debian ) und verarbeite es über ruby . Die Ausgabe ist immer um 90 Grad gedreht. Es sollte sich genauso wie die Eingabe korrekt drehen. :autorotate Taste hat nicht geholfen.

Beispielbild: 20190519_225024.zip

_Sample hat einen vertikalen USB-Stick. Die Ausgabe erfolgt immer horizontal ._

Bitte beachten Sie auch unsere Diskussion hier: https://github.com/janko/image_processing/issues/52

Ich habe jedoch das gleiche Skript unter Windows mit libvips 8.6.4 ausgeführt, die Ausgabe ist korrekt. Ich bekomme die richtige Drehung. Wie die Eingabe.

Ich habe auch noch einen letzten Test gemacht. Habe das Skript unter Linux ausgeführt, dann die Ausgabedatei in Windows kopiert und ich sehe, dass sie falsch gedreht sind.

Linux-Server hat libvips 8.7.4 . 8.8.0-rc3 kurzem auch

Außerdem bestätigt @janko , dass es auch auf dem Mac funktioniert.

Was könnte das Problem sein?

_Ich habe vorher auf Golang gearbeitet, wenn ich solche Bilder (wie das angehängte) hochlade und verarbeite, bekomme ich immer das richtige Ergebnis mit :autorotate . Aber diesmal nicht auf ruby_

Skript :

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")

Aktualisieren:

Ich öffne dieses Bild mit mspaint , ziehe zufällig eine Linie. Habe es gespeichert. Dann mit obigem Skript verarbeitet und die Ausgabe ist korrekt . Das ist wirklich seltsam.

question

Hilfreichster Kommentar

Da ich deine Antwort sehe, kann ich nicht aufhören vor mich hin zu lachen. Wie habe ich das verpasst!

Ja, libexif-dev ist nicht auf dem Computer installiert...

Problem durch Neuaufbau mit libexif-dev behoben.

(Im Ernst, wie habe ich das verpasst)

Dankeschön!

Alle 4 Kommentare

Hallo @gencer ,

Nur eine Vermutung, aber könnten Ihre libvips auf Debian ohne libexif erstellt worden sein?

Ohne Exif-Unterstützung kann libvips das Ausrichtungs-Tag auf dem Bild nicht sehen und es nicht drehen.

Versuchen Sie zum Testen, das Orientierungs-Tag in der Befehlszeile zu lesen, z.

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

Da ich deine Antwort sehe, kann ich nicht aufhören vor mich hin zu lachen. Wie habe ich das verpasst!

Ja, libexif-dev ist nicht auf dem Computer installiert...

Problem durch Neuaufbau mit libexif-dev behoben.

(Im Ernst, wie habe ich das verpasst)

Dankeschön!

Schön, dass es jetzt funktioniert!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen