Pull to refresh

Как я создал формат изображений на уровне png в 16 лет

Reading time4 min
Views3.8K

Всем привет, я разработал формат изображений .pi.

Мы привыкли к JPEG, PNG, PSD – форматам, которые годами хранят наши изображения. Но что, если я скажу, что файл может быть не просто статичным контейнером пикселей, а манифестом динамического процесса? Что, если он сам умеет эффективно работать с гигантскими данными, подтягивать контент извне и хранить всю свою историю изменений?

Мне 16 лет. Весь этот проект, который я сейчас представлю, был создан, отлажен и протестирован на слабом устройстве

Сегодня я хочу рассказать о PIX (Pixel Scene) Format v16.0 – эволюции моего собственного бинарного формата изображений, который теперь способен на то, о чем большинство «популярных» форматов могут только мечтать.

Что такое PIX v16.0 и чем он отличается от того, что вы привыкли видеть?

В основе PIX лежит не просто идея сохранения картинки, а концепция сложной, многослойной, анимированной сцены. В предыдущей версии (v12.0) я уже реализовал слои, таймлайн-анимацию, поддержку разных кодеков (WebP, AVIF, PIX_NATIVE) и даже собственное супер-разрешение с хранением остаточных данных (residuals).

Но в v16.0 я пошел дальше и переосмыслил само взаимодействие формата с данными, временем и внешним миром. Теперь PIX – это спецификация для производительного, взаимосвязанного и версионированного документа.

Три Столпа Революции PIX v16.0

Контекстуальная Ленивая Загрузка (INDX-чанк)

Проблема: Открытие PSD-файла на несколько гигабайт – это боль. Он грузится целиком, забивая оперативку.

Решение PIX: Новый чанк INDX (Index) содержит полную карту файла – где и что лежит. Функция load() теперь мгновенна – она читает только заголовок и индекс, возвращая легковесный SceneProxy. Данные слоев или других объектов потоково считываются с диска только в момент явного обращения к ним.

Результат: Мгновенное открытие даже гигантских сцен (терабайты данных!), минимальное потребление памяти, возможность работать с комплексным контентом на любом устройстве.

Связанные Данные и Внешние Ресурсы (LINK‑чанк): «Веб‑путник».

Проблема: Файлы-контейнеры (JPEG, PNG,даже PSD) — это «тюрьмы» для данных. Если нужно переиспользовать один и тот же актив (логотип, текстуру) в сотнях файлов, приходится дублировать его. Изменил актив — иди обновляй сотни файлов.

Решение PIX: Чанк LINK позволяет слоям ссылаться на внешние активы по URI (HTTP, локальный путь), с криптографическим хешем для проверки целостности.

Результат: Масштабное переиспользование ресурсов, мгновенные «живые» обновления общих активов во всех ссылающихся PIX‑файлах, возможность собирать сцены из распределенных источников (например, из облака или удаленных серверов).

Неизменяемая История и Дельта‑Чанки (DELT, SAVE): «Путешественник во времени».

Проблема: Большинство форматов хранят только конечное состояние. Нужна версионность? Приходится использовать внешние VCS (Git), бэкапы или специфичные для приложений истории.

Решение: Формат принимает append-only философию. DELT-чанки записывают каждое изменение (операцию), а SAVE-чанки действуют как точки "коммита".

Результат: Встроенный контроль версий прямо в файле. Можно откатиться к любой точке в истории, отследить изменения. Основа для устойчивого к сбоям сохранения и для коллаборативной работы над графическим контентом. Это как Git, но на уровне файлового формата.

Это можно применять?

Профессиональный Графический Дизайн: Реальная альтернатива PSD для гигантских макетов. Мгновенное открытие, экономия памяти, встроенная история правок и возможность подключать общие дизайн-системы/активы извне.

Веб-Разработка: Оптимизированные интерактивные баннеры, UI-элементы, инфографика. Загрузка только видимых частей, динамическое обновление контента.

Игровая Индустрия: Игровые ассеты, которые подгружаются на лету, общие текстуры и спрайты, встроенная версионность для художников.

Коллаборативные Платформы: PIX может стать основой для облачных графических редакторов с бесшовной совместной работой и историей изменений..

Приглашаю вас в мир PIX. Задавайте вопросы, критикуйте, предлагайте идеи. Самое время перестать жить в прошлом и посмотреть, на что способен формат, который смотрит в будущее.

Ссылки:

GitHub репозиторий

Телеграм канал

Конвертер
Конвертер

В настоящее время вышла версия 26

Что нового?

Расширенная поддержка 3D и машинного обучения

Введены новые, строго типизированные фрагменты для объединения ресурсов в одном файле:

MESH: для хранения геометрии 3D-моделей.

MATERIAL: для описания свойств материалов PBR и других.

LIGHT: для параметров источников света в сцене.

ML_MODEL: для инкапсуляции моделей машинного обучения (например, в формате ONNX).

Интеграция сжатия данных Основной блок данных теперь по умолчанию сжимается с использованием алгоритма Zstandard (Zstd). Это позволяет значительно уменьшить размер файлов, оптимизируя их хранение и передачу по сети.

Оптимизированная архитектура чтения

Реализация SceneReader была переработана для повышения безопасности и производительности. Ключевым улучшением является проверка криптографической подписи всего блока данных перед его распаковкой. После успешной проверки данные помещаются в память, обеспечивая быстрый, ленивый доступ к отдельным объектам по требованию.

Расширенный заголовок файла

В заголовок добавлены два новых поля: тип используемого сжатия и строка для пользовательских метаданных в формате JSON. Это позволяет быстро проверять содержимое файла без необходимости его полной распаковки

Tags:
Hubs:
+5
Comments23

Articles