Hallo,
ich hoffe man kann mir weiterhelfen. Ich möchte mehrere JPG- Bilder nach dem Datum sortieren. Eine Möglichkeit besteht ja darin, das Änderungsdatum der Datei zu verwenden, was leider nicht immer dem tatsächlichen Aufnahmedatum des Bildes entspricht. Die Bessere Alternative besteht darin, das Datum direkt aus den Metadaten des JPG´s auszulesen. Dies soll möglichst performant und wichtig ohne Fremde Bibliotheken erfolgen.
Ich habe nachfolgendes Beispiel zum auslesen der Bildgröße direkt aus der Datei im Netz gefunden, was echt perfekt ist. Leider finde ich nirgendwo eine Information wie ich analog das Erstellungsdatum auslesen kann. Ich habe schon stundenlang nach einer Lösung gesucht. Vielleicht hat jemand eine Idee, ich bin schon am verzweifeln.
ich hoffe man kann mir weiterhelfen. Ich möchte mehrere JPG- Bilder nach dem Datum sortieren. Eine Möglichkeit besteht ja darin, das Änderungsdatum der Datei zu verwenden, was leider nicht immer dem tatsächlichen Aufnahmedatum des Bildes entspricht. Die Bessere Alternative besteht darin, das Datum direkt aus den Metadaten des JPG´s auszulesen. Dies soll möglichst performant und wichtig ohne Fremde Bibliotheken erfolgen.
Ich habe nachfolgendes Beispiel zum auslesen der Bildgröße direkt aus der Datei im Netz gefunden, was echt perfekt ist. Leider finde ich nirgendwo eine Information wie ich analog das Erstellungsdatum auslesen kann. Ich habe schon stundenlang nach einer Lösung gesucht. Vielleicht hat jemand eine Idee, ich bin schon am verzweifeln.
Code:
public static Dimension getJPEGDimension(File f) throws IOException {
FileInputStream fis = new FileInputStream(f);
// check for SOI marker
if (fis.read() != 255 || fis.read() != 216)
throw new RuntimeException("SOI (Start Of Image) marker 0xff 0xd8 missing");
Dimension d = null;
while (fis.read() == 255) {
int marker = fis.read();
int len = fis.read() << 8 | fis.read();
if (marker == 192) {
fis.skip(1);
int height = fis.read() << 8 | fis.read();
int width = fis.read() << 8 | fis.read();
d = new Dimension(width, height);
break;
}
fis.skip(len - 2);
}
fis.close();
return d;
}