Можете ли вы проверить, является ли файл "действительно" изображением в Java? - PullRequest
0 голосов
/ 16 мая 2018

Я учусь программировать на Java и сейчас пытаюсь создать программу с графическим интерфейсом на Swing, которая создала бы слайд-шоу из изображений в заданном каталоге.Теперь мой вопрос: можете ли вы проверить, является ли файл действительно изображением?Я говорю о файле, который не только имеет правильное расширение, например, .jpg или .png, но также содержит контент, который ... интерпретируется как изображение, я думаю?Моя формулировка здесь может быть не точной, но я надеюсь, что мой вопрос хотя бы частично понятен.Если какая-либо часть моего вопроса имеет неоднозначную интерпретацию, пожалуйста, ответьте как можно более широко.Я знаю, что прошу совсем немного, но я был бы очень признателен, если бы кто-то мог ответить на это.(Не дубликат Проверьте, является ли файл файлом изображения , потому что я думаю, что автор там имел в виду сами расширения) Заранее спасибо, NFSU

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Я бы просто попытался загрузить его как изображение и посмотреть, получите ли вы изображение:

import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        System.out.println(isImage(new File("./dataset1.csv")));  // false
        System.out.println(isImage(new File("./graph.png")));  // true
    }

    public static boolean isImage(File file)
    {
        try {
            return ImageIO.read(file) != null;
        } catch (Exception e) {
            return false;
        }
    }
}
0 голосов
/ 16 мая 2018

Большинство файлов изображений начинаются с магического числа, поэтому для быстрой проверки поищите его.

например. файл PNG всегда начинается с байтов 89 50 4E 47 0D 0A 1A 0A.

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

ОБНОВЛЕНИЕ : См. Также список подписей файлов в Википедии (любезно предоставлено DevilsHnd ) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...