Как получить изображение даты, созданное в java

Я хотел бы извлечь дату создания файла jpg. В Java есть метод lastModified для объекта File, но, похоже, он не поддерживает извлечение созданной даты из файла. Я считаю, что информация хранится в файле, поскольку дата, которую я вижу, когда наводю указатель мыши на файл в Win XP, отличается от даты, которую я могу получить, используя JNI с «dir / TC» в файле в DOS.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
10
0
13 101
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Дата хранится в данных EXIF в формате jpeg. Есть библиотека Java и просмотрщик в java, которые могут быть полезны.

Вероятно, вам нужно что-то для доступа к данным exif. Google предлагает эта библиотека.

Я использую эту библиотеку метаданных: http://www.drewnoakes.com/code/exif/

Кажется, работает довольно хорошо, хотя имейте в виду, что не все изображения JPEG имеют эту информацию, поэтому она не может быть на 100% надежной.

Если метаданные EXIF ​​не содержат дату создания, вам, вероятно, придется обойтись Java lastUpdated - если вы не хотите прибегать к Runtime.exec (...) и использовать системные функции для выяснения (я бы не стал) Я не рекомендую это, тем не менее!)

Да, это сработало для некоторых моих изображений и не сработало для данных изображений, хранящихся в нашей базе данных.

Yan Khonski 18.04.2016 14:39
Ответ принят как подходящий

Информация хранится в изображении в формате, называемом EXIF или текст ссылки. Есть несколько библиотек, способных читать этот формат, например Вот этот

Большой! Спасибо за все полезные комментарии! Думаю, я воспользуюсь библиотекой на drewnoakes.com.

user16029 17.09.2008 18:46

Формат файла сменного изображения (официально Exif, не EXIF в соответствии со спецификациями JEIDA / JEITA / CIPA) - это стандарт, который ...

principal-ideal-domain 06.10.2014 22:31

В приведенном ниже примере кода у пользователя запрашивается путь к файлу, а затем выводятся дата и время создания:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(final String[] args) {
        try {
            // get runtime environment and execute child process
            Runtime systemShell = Runtime.getRuntime();
            BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter filename: ");
            String fname=(String)br1.readLine();
            Process output = systemShell.exec("cmd /c dir /a "+fname);
             // open reader to get output from process
            BufferedReader br = new BufferedReader (new InputStreamReader(output.getInputStream()));

            String out = "";
            String line = null;

            int step=1;
             while((line = br.readLine()) != null ) 
              {
                 if (step==6)
                {
                out=line;
                }
                 step++;
                 }          // display process output

            try{
            out=out.replaceAll(" ","");
            System.out.println("CreationDate: "+out.substring(0,10));
            System.out.println("CreationTime: "+out.substring(10,15));
            }
            catch(StringIndexOutOfBoundsException se)
            {
                System.out.println("File not found");
            }
            }
          catch (IOException ioe){ System.err.println(ioe); }
          catch (Throwable t) { t.printStackTrace();}
    }
}

Спасибо за фрагмент кода, но мне действительно нужно получить дату из метаданных изображения, а не из файловой системы.

user16029 17.09.2008 18:47

Другие вопросы по теме