Dateigröße, Auflösung und Ausmaße eines Bildes auslesen

d3n1s

Mitglied
Hallo zusammen,
ich habe eine relativ einfache Aufgabe für euch aus einem Bereich, in dem ich mich leider noch gar nicht auskenne. "Java ist auch eine Insel" hat mein Problem leider auch nicht lösen können.

Ich habe ein Bild auf meiner Festplatte: "C:/Bilder/test.jpg"
Ich möchte wissen wie viel MB das Bild groß ist, wie die Ausmaße in Pixeln sind und wie die Auflösung in dpi ist.

Ist doch eine spannende Aufgabe ... wer kann sie lösen? :D

Danke schonmal!
 

eRaaaa

Top Contributor
Java:
	File f = new File("PATH"); //anpassen !!!
	BufferedImage image = ImageIO.read(f);
	System.out.println("KB: "+f.length()/1024);
	System.out.println("Ausmaße: "+image.getWidth()+"x"+image.getHeight());

dpi ....öhh *NEXT* :D
 

Atze

Top Contributor
dpi ist ja eigentlich ne anzeige sache, oder? die infos können zwar als header gesetzt werden, aber ne wirklich aussage über die anzeigeauflösung ist das nicht. imho
 

d3n1s

Mitglied
Danke schon einmal für die Antwort. Mit BufferedImage kann man hier also viel erreichen. Es steht jedoch noch die Frage aus mit der Auflösung in dpi. Google weiss da auch nicht wirklich weiter. Wäre schon wir hierfür noch eine Lösung finden könnten.

nochmal die Frage:
Wie kann man in Java die Auflösung eines Bildes in dpi auslesen?
 

DaveX

Mitglied
Auflösung eines Bildes wird in Pixel x Pixel angegeben und DPI ( Dots per Inch ) sind Informationen für Scanner oder Drucker.
Dh. Das ein Scanner X Pixel pro Inch "abscannt" ode Drucker der X Pixel auf eine Fläche von einem Inch druckt.

ABER:

Java:
decoder = JPEGCodec.createJPEGDecoder( new FileInputStream( "IMAGE_PATH"));
JPEGDecodeParam param = decoder.getJPEGDecodeParam();
param.getDensityUnit(); // falls die der größe eines Inches entspricht ...
param.getXDensity(); // gibt dies die density per UNIT also wäre...
param.getXDensity() / param.getDensityUnit() ; // die Dots per Inch

Ich weiss nicht ob die Infos in allen Image Dateien verfügbar sind.
 
Zuletzt bearbeitet:

d3n1s

Mitglied
Danke Dave, habe es hinbekommen! Unten steht der Code, um von einem JPEG-Bild die Auflösung in dpi zu ermitteln.

Java:
File f = new File("C:/Bilder/test.jpg");
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream(f));
decoder.decodeAsBufferedImage();
JPEGDecodeParam param = decoder.getJPEGDecodeParam();
int xDensity = param.getXDensity();
System.out.println("Resolution: " +xDensity);
 
Zuletzt bearbeitet:

jeppi

Mitglied
Java:
System.out.println("Resolution: " +xDensity);

Es ist nicht gesagt, dass im Bild tatsächlich eine Druckdichte/Auflösung angegeben ist,
da dieser Wert afaik in den exif-Daten eingetragen wird und dies keine Pflichtangabe darstellt.

(Mich würde in so einem Fall mal interessieren, was xDensity dann zurückgibt....)
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben