Задать вопрос

В чем причина ограничения на размер изображения 65536 на 65536 px в формате JPEG(JFIF)?

Столкнулся с необходимостью технического обоснования выше указанного ограничения.
Ознакомившись с спецификацией JFIF ответ на вопрос найти не смог.
Прошу помочь советом, ну или ответом :)
Спасибо.
  • Вопрос задан
  • 2637 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Wikipedia:
65536 is a power of two: 2^{16} (2 to the 16th power)


Все элементарно: в седой древности, когда разрабатывался формат, 16 бит было "нормальной" разрядностью и казалось более чем достаточно на веки вечные. Ну, а потом, когда в мире наплодилось имплементаций, было уже поздно что-то менять :) Ну, и если честно: 64к пикселей, это весьма немало и этого стало реально нехватать сравнительно недавно.

UP:
JFIF, как формат, вообще, затачивался под медленные каналы связи (на те времена диал-ап 300 Baud было верхом совершенства) с последовательной передачей. Этим определена структура разметки (попрыгушечки по блокам через оффсеты) и структура файла: ключевая информация (например, IPTC) как можно ближе к началу, данные - в хвосте. Предполагалось, что принимающая система может в зависимости от уже принятых метаданных "на лету" перенаправить дальнейший поток данных, куда нужно. По тем временам это было весьма резонное соображение, т.к. ресурсы (в первую очередь, доступная память) были крайне ограничены.

UP2:
Вы считаете, что дело в размерности полей "X density" и "Y density"?

Нет! Мы считаем, что дело в структуре маркера SOF0 (0xC0) (Start Of Frame), за которым следуют:
- 8 бит - бит-на-пиксель,
- 16 бит - ширина,
- 16 бит - высота и
- 8 бит - кол-во компонент.

Вот эти самые 2 по 16 бит и ограничивают макс. размеры изображения.

Density - это совсем из другой оперы. Как следует из названия, это таки реально разрешение по осям Х и У, задаваемое в единицах, которые закодированы в пред. байте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
CTAKAH4uK
@CTAKAH4uK
Размер X и Y 2 байта, больше чем 65536 в 2 байта не записать.
en.wikipedia.org/wiki/JPEG_File_Interchange_Format...
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Здравый смысл?
Ответ написан
Комментировать
@kras_ai Автор вопроса
Вы считаете, что дело в размерности полей "X density" и "Y density"?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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