svp писал(а):Проблема держать в оперативной памяти ОГРОМНЫЙ битмап.
Да, это главная проблема.
Решение же я описывал (прямое конструирование контейнера с линейным доступом на диске).
svp писал(а):А это вот уже второй раз говорит Parasite:
Не нужно мне меня же цитировать, да еще столь многословно - я прекрасно помню свои слова, спасибо. А оверквотинг есть моветон на любом ресурсе.
Кому надо - поднимут глаза и прочитают пост на один выше, не стоит их настолько недооценивать.
svp писал(а):Не шла речь так же о ... сжатии. Оно здесь не нужно.
Совершенно верно: не только не нужно, но и противопоказано - ибо нарушается линейность доступа к массиву, чем все достоинства способа сведутся на нет.
Но дело в том, что предложенный кем-то (может и Вами - не помню, лень листать) ранее ЖПЕГ - это
формат со сжатием по определению, причем у оного сжатия довольно большое кол-во настраиваемых параметров (читай - крайне низкая предиктивность конечного результата от исходных произвольно взятых данных, как и в любом архиве). Далее - см.строчкой выше.
svp писал(а):Речь идёт о ЧАСТНОМ случае, а не о полной поддержке формата.
Формат ЖПЕГ не допускает "частных" случаев себя - нельзя быть немножко беременным, извините. Либо это жпег-структура со
всеми необходимыми декодеру полями - либо это набор случайных байт, выдающих тот или иной еррор при попытке распаковать оные согласно жпег-структуры.
Другой вопрос, что число
именно необходимых полей много меньше числа
всех возможных, кои и можно смело проскипать (например внедренный цветовой профайл, или превью).
svp писал(а):Ни о какой коррекции произвольного пикселя изначально речи не шло и не может идти! Зачем гнать столько ненужной воды?
А
как еще Вы планировали заполнять свежесозданный контейнер информацией, как не попиксельно\построчно\поблочно (читай - побайтно прямой записью в файл-контейнер)?
svp писал(а):Наверняка не требуется иметь огромный битмап в памяти чтобы сжать его в JPEG.
Можете иметь его в свопе либо в файле - не вопрос.
Для упаковки все равно понадобится конечная структура - причем
вся, от начального до конечного байта. При нефиксированном конце данных индексы в заголовке просто потеряют смысл - а с поврежденными индексами ЖПЕГ-структура практически не подлежит восстановлению, как и любой архив с поврежденным заголовком и без внедренной той или иной меры избыточности (кою ЖПЕГ, как известно, не допускает).
svp писал(а):Очевидно есть потоковые алгоритмы, которые могут писать прямо на винчестер.
Потоковые алгоритмы оперируют понятиями меток начала и конца передаваемого
фрейма вместо понятий начала и конца
файла\данных (и подключение к потоку возможно именно на промежутке между двумя фреймами, а не в произвольно выбранном месте) - и в общем и целом имеют вид сепарированных кусков информации - могущих передаваться независимо друг от друга, в том числе и необязательно строго последовательно - на фоне непрерывной синхропоследовательности, на кою распакованные куски и накладываются на стороне клиента (эту последовательность может представлять собой, например, время, либо несущая частота, либо еще какой синхронизированный с отправителем опорный источник). В любом случае, потоковому алгоритму при упаковке нужны как минимум метки начала и конца конкретного фрейма для его упаковки и отправки клиенту.
Конкретная реализация потокового алгоритма в общем и целом довольно сложна, и она не имеет ничего общего со ЖПЕГом (кой и предложен к обсуждению в данном случае).
Возвращаясь к нашим баранам ака дампу глобального файла из кучи локальных - принимая один тайл за "фрейм", глобальный контейнер за "клиента" и смещение от начала глобального контейнера как "несущую" - мы как раз и получаем именно тот алгоритм, который я и предлагал несколько ранее: "фреймы" собираются на стороне "клиента" согласно начала файла, имеющего в каждом конкретном месте строго уникальное значение "несущей".