Input/Output BufferedImage vertauscht width und height

Mahony1988

Mitglied
Hallo zusammen,

nach einem input einer .jpg Datei sind Höhe und Breite des Bildes ohne ersichtlichen Grund vertausche.
Da Originalbild ist HxW 3264x2448px, wenn ich es direkt nach dem einlesen wieder speichere sind es 2448x3264px.
Hat jemand eine Idee, woran das liegt?

private BufferedImage input;
private File f = new File("testbilder/output.jpg");

public ImageHandler(String filepath){
try{
input = ImageIO.read(new File(filepath));
if(input.getWidth() > input.getHeight()){
}
ImageIO.write(input, "jpg", f);
}
catch(IOException e){
System.out.println("Datei nicht gefunden");
}
}
 
Hat jemand eine Idee, woran das liegt?

Ja, das Bild ist entgegen deiner Annahme eigentlich doch vom Format 2448x3264px. Allerdings liegen dort auch Exif Metadaten drauf, welche eine andere Orientierung vorgeben, als das eigentliche Bildformat (passiert z.B., wenn du mit dem Handy im Querformat fotografierst o.Ä.). ImageIO kann (oder jedenfalls konnte) damit nicht umgehen.
Entweder du schaust nach einer neueren ImageIO version, welche dieses "Feature" nicht mehr enthält, oder du weichst auf eine andere Lösung aus, oder wertest die MEtadaten selbst aus und reagierst entsprechend, indem du etwa das Bild selbst rotierst.
 
Achso, dass es gedreht wird, habe ich ich überelesen. Aber die Erklärung steht bereits da (in dem Beitrag von @stg ). Und ne Menge Workarounds hast du jetzt auch. 😉
 

Neue Themen


Zurück
Oben