Вы наверно помните, что Mozilla убрала поддержку MNG и JNG из Firefox еще в 2003 г. Чтобы увидеть их (только через тег embed) нужен плагин. Из-за того, что поддержки JNG нигде нету, нельзя встретить JPEG с альфа-каналом. А ведь как было бы здорово…
Но я расскажу как восстановить JNG изображения на своей странице.
Перед началом нам нужны такие функции, как загрузка бинарного кода, crc32 и желательно deferred. Все эти немаловажные функции можно взять с apng-canvas. Но я их несколько улучшил, убрал все лишнее, добавил несколько функций, например CReader. Заранее приготовил все необходимые инструменты.
Сигнатура JNG несколько отличается от сигнатуры PNG двумя первыми байтами. Сигнатура — это важная часть JNG, именно от него зависит, парсить JNG или нет.
JNG, как и PNG, устроен из чанков, но отличается тем, что хранит JPEG изображение, и альфа-канал в виде PNG данных или в том же JPEG.
Все что вам нужно знать, так это спецификацию JNG. Прочитать ее можете здесь. Нам нужны байты ширины и высоты, а также байты, связанные с альфа-каналом.
Нам достаточно собрать все части из JDAT и мы сможем получить JPEG изображение.
Это чанк альфа-канала, но он нам доставляет больше проблем. Вы знаете, что PNG состоит как минимум из IHDR, IDAT и IEND. Причем IHDR мы должны сами построить, необходимые байты придется брать из JHDR. Цветовой тип всегда будет равняться нулю у JNG альфа-канала.
Этот чанк встречается крайне редко, но с ним нужно поступать также как с JDAT, но определять надо как альфа-канал.
Не нужно ничего объяснять, это конечный чанк у JNG.
Перейдите на страницу jnglike.site40.net/ и там вы увидите ссылку на скачивание скрипта.
Но я расскажу как восстановить JNG изображения на своей странице.
Начнем
Перед началом нам нужны такие функции, как загрузка бинарного кода, crc32 и желательно deferred. Все эти немаловажные функции можно взять с apng-canvas. Но я их несколько улучшил, убрал все лишнее, добавил несколько функций, например CReader. Заранее приготовил все необходимые инструменты.
Сигнатура
Сигнатура JNG несколько отличается от сигнатуры PNG двумя первыми байтами. Сигнатура — это важная часть JNG, именно от него зависит, парсить JNG или нет.
Чанки
JNG, как и PNG, устроен из чанков, но отличается тем, что хранит JPEG изображение, и альфа-канал в виде PNG данных или в том же JPEG.
JHDR
Все что вам нужно знать, так это спецификацию JNG. Прочитать ее можете здесь. Нам нужны байты ширины и высоты, а также байты, связанные с альфа-каналом.
JDAT
Нам достаточно собрать все части из JDAT и мы сможем получить JPEG изображение.
IDAT
Это чанк альфа-канала, но он нам доставляет больше проблем. Вы знаете, что PNG состоит как минимум из IHDR, IDAT и IEND. Причем IHDR мы должны сами построить, необходимые байты придется брать из JHDR. Цветовой тип всегда будет равняться нулю у JNG альфа-канала.
JDAA
Этот чанк встречается крайне редко, но с ним нужно поступать также как с JDAT, но определять надо как альфа-канал.
IEND
Не нужно ничего объяснять, это конечный чанк у JNG.
Я ничего не понимаю, а можно скрипт?
Перейдите на страницу jnglike.site40.net/ и там вы увидите ссылку на скачивание скрипта.
Комментариев нет:
Отправить комментарий