UnsupportedFormatException: не найдено подходящего ImageReader для исходных данных - PullRequest
0 голосов
/ 17 января 2020

Я использую код java для создания thumbnail изображения для всех типов загрузки изображений с фиксированным размером 250x250. И это работает для всех типов изображений, за исключением "jpeg" изображений. При попытке с изображениями в формате jpeg код возвращает ошибку типа "net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found for source data." Вот пример кода, который я пытаюсь

            String tempDir = System.getProperty("java.io.tmpdir");
            String fileName = file.getOriginalFilename();
            String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
            fileName = fileName.replace(fileNameWithoutExt, fileNameWithoutExt + "-thumbnail");
            Builder builder = Thumbnails.of(new ByteArrayInputStream(fileData)).size(250, 250);
            File thumbnail = new File(tempDir + "\\" + fileName);
            builder.toFile(thumbnail);

И зависимость, которую я использую:

        <dependency>
             <groupId>net.coobird</groupId>
             <artifactId>thumbnailator</artifactId>
             <version>[0.4, 0.5)</version>
        </dependency>

Я также попробовал последнюю зависимость maven для thumbnailator

<dependency>
        <groupId>net.coobird</groupId>
        <artifactId>thumbnailator</artifactId>
        <version>0.4.8</version>
    </dependency>

Но эта также возвращает ту же ошибку. Есть ли другой способ сделать то же самое?

1 Ответ

2 голосов
/ 17 января 2020

Затем прочитайте его со стандартным java самим.

       BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(fileData)));
       Builder builder = Thumbnails.of(originalImage).size(250, 250);

JPEG знает несколько разных магических c файлов cookie (маркировка формата файла начинается с байтов).

Сначала байты должны быть FF D8 FF.

Проверять их. Может случиться так, что есть некоторые поврежденные данные.

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