В настоящее время я пытаюсь понять, как создаются JPEG, ради интереса. Я нашел документы в разных разделах (soi, sof, sos, eoi и т. д.), Которые довольно просты, но не о том, как получить оттуда хоть один пиксель.
Моя первая мысль заключалась в том, чтобы сделать маленькое изображение, например 2x2, но со всеми заголовками и разделами все еще слишком много, чтобы изолировать информацию о пикселях, не зная точное местоположение и метод ее извлечения. Я уверен, что он сжат, но есть ли способ получить его вручную? (как RGB?)
Кто-нибудь знает, как это сделать?
Получение значения одного пикселя изображения JPEG в любом случае требует синтаксического анализа некоторых (если не большинства) этих разделов.
На https://www.imperialviolet.org/binary/jpeg/ есть хорошее пошаговое руководство (хотя код находится на Haskell, поэтому он может быть в меру непостижим для простых смертных), в котором объясняются концепции, лежащие в основе превращения JPEG в набор значений RGB.
Это единственный известный мне источник, который полностью объясняет JPEG:
https://www.amazon.com/gp/product/B01JXRY4R0/ref=dbs_a_def_rwt_bibl_vppi_i4
Анализировать структуру потока JPEG несложно. Декодирование сканирования JPEG очень сложно и включает в себя несколько этапов сжатия. Кроме того, обычно используются два разных типа сканирования (прогрессивное и последовательное).
Похоже, это именно то, что я искал, спасибо за быстрый ответ.