TIFF неправильной высоты - PullRequest
       8

TIFF неправильной высоты

0 голосов
/ 08 сентября 2011

ОК, я согласен, что это странный вопрос, но потерпите меня.

У меня есть TIFF изображение, и я использую Windows. Когда я щелкаю правой кнопкой мыши и перехожу на Properties, я вижу Width = 1728 pixels и Height = 1146 pixels. Когда я читаю это с Java как BufferedImage и звоню getWidth() и getHeight(), я вижу то же самое. Когда я открываю его с помощью MS Paint, я вижу тот же размер.

Но проблема в том, что этот размер неправильный, потому что высота слишком мала и изображение выглядит идиотским . Теперь интересная часть: когда я открываю его с помощью IrfanView, я вижу это нормально, с Height = 2292 pixels. Когда я открываю его с помощью Windows Photo Viewer, он выглядит нормально с Height = 2292 pixels.

Итак, мой вопрос: как IrfanView и Windows Photo Viewer удалось распознать правильную высоту, хотя она была указана неправильно в метаданных изображения? А как сделать то же самое в Java? Я не хочу показывать идиотское изображение пользователю.

P.S Изображение пришло извне, и я ничего не могу сделать с неправильными метаданными ...

1 Ответ

2 голосов
/ 10 ноября 2011

Я решил проблему. На самом деле изображение было неуместным с самого начала. Причина, по которой IrfanView показывает, что все в порядке, заключается в том, что она сравнивает Horizontal и Vertical DPI и, если они не равны, изменяет размер изображения, чтобы сделать их равными.

Например:

HorizontalDPI = 200
VerticalDPI = 100
Width = 800
Height = 600

Когда IrfanView открывает изображение, оно делает следующее:

Height = Height * (HorizontalDPI / VerticalDPI) = 600 * 2 = 1200.

Я сделал то же самое в моем программном обеспечении. Все работает отлично :)

Надеюсь, этот пост будет полезен другим людям:)

...