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

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

11
задан Tom Kidd 9 September 2008 в 20:39
поделиться

5 ответов

Большинство форматов файла изображения имеет уникальные байты в запуске. Unix file управляйте, чтобы взгляды в начале файла видели, какие данные он содержит. См. статью Wikipedia о Магических числах в файлах и magicdb.org.

17
ответ дан 3 December 2019 в 05:36
поделиться

Уверенный существует. Как другие упомянули, большинство изображений запускается со своего рода 'Волшебства', которое будет всегда переводить в своего рода данные Base64. Следующее является парой примеров:

Битовый массив запустится с Qk3

Jpeg запустится с /9j/

GIF запустится с R0l (Это - нуль как второй символ).

И так далее. Не трудно взять различные типы изображения и выяснить то, к чему они кодируют. Просто будьте осторожны, поскольку у некоторых есть больше чем одна часть волшебства, таким образом, необходимо объяснить их в B64 'код перевода'.

4
ответ дан 3 December 2019 в 05:36
поделиться

Всесторонний сайт форматов файлов доступен в:

http://www.wotsit.org

0
ответ дан 3 December 2019 в 05:36
поделиться

Также file на *отклоняют командную строку или чтение начальных байтов файла. Большинство файлов идет с уникальным заголовком в первых нескольких байтах. Например, заголовок TIFF выглядит примерно так:

0x00000000: 4949 2a00 0800 0000
Для получения дополнительной информации о формате файла TIFF конкретно, если требуется знать то, что обозначают те байты, пойдите сюда.
0
ответ дан 3 December 2019 в 05:36
поделиться

TIFF начнутся или II или MM (порядок байтов Intel или Motorolla).
Спецификация TIFF 6 может быть загружена здесь и не слишком тверда для следования

0
ответ дан 3 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: