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



## d3n1s (26. Feb 2010)

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? 

Danke schonmal!


----------



## eRaaaa (26. Feb 2010)

```
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*


----------



## Gast2 (26. Feb 2010)

Hab nix gesagt, aber der link sieht auch ganz gut aus: 

Java 2D - How to read DPI from an Image


----------



## Atze (26. Feb 2010)

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 (26. Feb 2010)

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 (26. Feb 2010)

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: 


```
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.


----------



## d3n1s (1. Mrz 2010)

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


```
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);
```


----------



## jeppi (1. Mrz 2010)

d3n1s hat gesagt.:


> ```
> 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....)


----------



## d3n1s (5. Mrz 2010)

Wie liest man denn die Größe in Pixeln von einem TIFF-Bild aus?


----------

