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

StackOverflow https://stackoverflow.com/questions/83787

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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();}
    }
}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top