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

    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 - это совсем из другой оперы. Как следует из названия, это таки реально разрешение по осям Х и У, задаваемое в единицах, которые закодированы в пред. байте.
    Ответ написан
    5 комментариев