LINUX.ORG.RU

Новый формат изображений быстрее PNG в десятки раз

 , , , qoi

Новый формат изображений быстрее PNG в десятки раз

6

3

Доминик Саблевски представил новый и невероятно простой в реализации формат изображений QOI (Quite OK Image). По представленным тестам, при сжатии изображений QOI производительнее PNG в 20–30 раз, а при распаковке — в 3–4 раза.

Доминик признаётся, что не является экспертом в области сжатия изображений. Идея создать новый простой и эффективный формат изображений пришла к нему во времена работы с MPEG-1. Его целью была скорость и простота.

Файлы QOI больше по размеру, чем PNG на 10–50 % в зависимости от картинки, поэтому QOI стоит применять, когда необходима скорость.

Исходный код на C, состоящий из одного универсального файла, доступен на GitHub.

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

Также доступны реализации на Zig, Rust, Go, TypeScript, Python, C#. Поддержка QOI добавлена в библиотеку SAIL.

Для пользователей Arch Linux в AUR доступен пакет qoi-git.

>>> Замеры скорости и размеров изображений

>>> Подробности

★★★

Проверено: Shaman007 ()
Последнее исправление: sudopacman (всего исправлений: 2)

Так тож обычное васянское наколеночное поделие. Если бы кто-то местный с таким на ЛОР пришёл, его бы обосрали. А раз с HN, то даже почитатели находятся?

Kalistrat
()
Ответ на: комментарий от Kalistrat

Так тож обычное васянское наколеночное поделие. Если бы кто-то местный с таким на ЛОР пришёл, его бы обосрали. А раз с HN, то даже почитатели находятся?

Сравнили.
Одно дело Билл Гейтс

ПЁРНЕТ

А другое дело на

ЛОР кто-то ...
anonymous
()
Ответ на: комментарий от anonymous

Если бы Билл Гейтс. Медийная личность таки. Здесь же Джон До обычный, тот же Вася Пупкин только из других широт.

Откуда эта избирательность, если не от чувства собственной неполноценности на фоне «белых господ»?

Kalistrat
()
Ответ на: комментарий от Gary

Затем, что deflate более тормозной и даёт меньшее сжатие в общем случае. На практике PNG хуже наколенной поделки какого-то чувака. Вопрос в необходимости PNG.

anonymous
()

Кстати, а как оно жмёт фотографии? В сравнении с JPEG?

anonymous
()
Ответ на: комментарий от anonymous

«I didn’t really intend to come off as that critical of javascript. For aggressive tasks in a resource constrained environment, it should clearly be viewed as the wrong tool, but those two caveats don’t apply to the vast majority of programming work. I think less code should be written in C/C++ than actually is – the safety problems of pointers/array overruns and explicit memory management are much worse than the performance benefits for most applications.

I did do a little bit of simple JS programming specifically to help decide what programming language my son should learn first, and I’m not sure that it wouldn’t have been the correct choice.

I do have a bit of a wry esthetic objection to the layers on layers on layers on layers world of web development, but I recognize it as a foreign culture (from my point of view) with significant and powerful capabilities. Native code developers shouldn’t be defensive about true accusations of security and stability limitations, and JS developers shouldn’t be defensive about true accusations of inefficiency.

People should avoid statements like this comment from above:

V8's JIT and typed array buffers make JS nearly as fast as C

These arguments only work when you are comparing native code kernels that limit themselves to the characteristics of the interpreted / dynamic language you are comparing it against.

If you compared a task with enough meat on it to really exercise an optimizing programmer – say, the transcoding pipeline in Rage that decompresses pages of HD photo data and recompresses to DXT format, an implementation in javascript is going to be drastically slower. I would be very surprised if it could come in within a factor of two, and I would sort of expect it to be an order of magnitude slower. I would be willing to bet money on the factor-of-two-slower statement if anyone rabidly objects to it.

Something else to consider: the “computers are always getting faster” argument has run out of steam with scalar processors. I still hold out hope for additional significant scalar improvements, but the pessimistic view would be that current C/C++ code is faster than Javascript will ever get. EVER. It still doesn’t matter for the vast majority of applications, but it is worth a little bit of pondering.

John Carmack»

xmikex ★★★★
()
Ответ на: комментарий от xmikex

найс опустил скриптухо-дебилов

anonymous
()
Ответ на: комментарий от xmikex

I did do a little bit of simple JS programming specifically to help decide what programming language my son should learn first

a bit of a wry esthetic objection to the layers on layers on layers on layers world of web development

Кринж уровня /r/pcj.

Kalistrat
()
Ответ на: комментарий от Kalistrat

Изучение программирования, начиная с веб, с последующим погружением – сквозь терни к звёздам, не иначе.

anonymous
()

Я могу набросать aoi-сжатие (anon ok image). Которое будет нагибать и deflate и qoi, и по скорости и по размеру. То же мне проблема.

anonymous
()
Ответ на: комментарий от anonymous

Я могу набросать aoi-сжатие (anon ok image). Которое будет нагибать и deflate и qoi, и по скорости и по размеру. То же мне проблема.

ЛОР ОБЯЗАН ПОСРАМИТЬ /на крайний случай ОБО…ТЬ/ qoi …

anonymous
()
Ответ на: комментарий от anonymous

назови формат loi, все таки ты же не просто анон.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

а толку? восстановления нет (и даже хорошо что нет!)

метод сжатия, метод контроля целостности и метод добавления избыточности для восстановления по хорошему не должны зависить друг от друга и предоставляться независимо.

уж на форуме где юникс-вейность почти религия такое должны понимать.

bmfx
()
Ответ на: комментарий от cobold

по-модному — jpeg one. чтобы всем понятно было (нет)

duott ★★★★★
()
Ответ на: комментарий от bmfx

ну так какая связь между реализацией методов и наличием в формате принципиальной возможности это сделать?

xmikex ★★★★
()
Ответ на: комментарий от former_anonymous

Так и я вроде эксперт мирового уровня.

Судя по тому что постишь - не похож. Фанатизм не всегда может компенсировать отсутствие знаний.

у тебя пригорело от разгромных бенчмарков

Меня просто позабавило, что некомпетентные дурачки без проверки постят очевидный бред, не удосужившить хоть немного вникнуть в тему.

Ну так сделай, нет? А так трындеть каждый может, знаешь.

Ты совсем поехал похоже. Это ты решил хватануть хайпа, запостив кривых бенчмарков. А когда тебе указали на очевидные ошибки, скатился к детским разводкам, вместо того чтобы ошибки искать.

Vit ★★★★★
()
Ответ на: комментарий от fernandos

Просто хайпожоры, топящие за новые стандарты, не понимают цену их продвижения. А для настройки или перепиливания енкодера, не ломая декодеры, квалификации не хватает.

Vit ★★★★★
()
Ответ на: комментарий от former_anonymous

через стадию таких «изобретений» проходит каждый кто знакомится с сжатием данных. просто данному «изобретению» почему-то повезло засветиться на лоре, в то время как намного более интересные вещи остаются уделом тематических форумов. на том же encode.su люди выкладывают гораздо более интересные вещи - и как с точки зрения новизны алгоритмов, так и по уровню оптимизации.

данная библиотечка действительно rle к которому присобачили 2 простейших фильтра. то что оно быстрее png это не следствие гениальности автора, просто оно не делает всего того что может дать те самые 10-50% уменьшения результирующего файла.

хочешь не напрягаясь пободаться с png? замени положенное по стандарту дожатие zip-ом на tornado или lzo. тоже будешь быстрее, но проигрывать по размеру результата меньше чем qoi.

но все это «универсальные» схемы сжатия, в основе которых одномерные контекстные модели. чтобы качественно жать картинки нужны хорошие двумерные модели, чтобы жать видео - трехмерные. стоит ли говорить, что в qoi нет даже качественной одномерной?

bmfx
()
Ответ на: комментарий от bmfx

чтобы качественно жать картинки нужны хорошие двумерные модели, чтобы жать видео - трехмерные

А чё там deflate такой двухмерный? Он вообще для текста придуман и жмёт потоки. Т.е. линии. Одномерные штуки.

С той лишь разницей, что deflate пожмёт повторяющуюся серию. А qoi – нет.

anonymous
()
Ответ на: комментарий от Vit

С самого начала (а эту хрень я видел уже давно) мне казалось, что это просто какой-то poc, что, мол, можно сделать простой формат картинок. Но потом прочитал статью про «идиоты всё усложняют, смотрите, как могу» всё стало на свои места.

Зато теперь есть простенькая задача для оценки скорости ЯП.

fernandos ★★★
()
Ответ на: комментарий от xmikex

Так сами спецификации не готовы, толку с того пдфа?

fernandos ★★★
()
Ответ на: комментарий от bmfx

в основе которых одномерные контекстные модели в qoi нет даже качественной одномерной

И он всё равно жмет картинки, и заметно быстрее (за линейное время). Даже полосатые https://phoboslab.org/files/qoibench/images/wallpaper/stripes-neon-flow_2732x2048.png (для того, кто усомнился в этом)

anonymous
()
Ответ на: комментарий от bmfx

А можешь присоветовать куда копать про сжатие фонтовых глифов?

Это буковки, в основном высотой 12-32 пикселя. Чернобелые с антиалиасингом. Критичен только декодера (для эмбедов надо)

https://github.com/lvgl/lv_font_conv/blob/master/doc/font_spec.md#compression - я примотал слегка похаканый RLE, но было бы интересно поюзать что-то более продвинутое, если такое вообще существует для таких мелких данных.

Vit ★★★★★
()
Ответ на: комментарий от xmikex

наличие контрольной суммы в стандарте png не дает тебе возможности исправить ошибку. нет даже принципиальной возможности.

но я хотел подчеркнуть другой момент. то что в qoi нет контрольной суммы вообще не проблема, по крайней мере если декодер не переполняет буффер результата (и каюсь, я не смотрел на декодер, я вообще только посмотрел на схему сжатия). если переполняет - ну, говнокод, но эту же схему можно реализовать безопасно в плане переполнения.

а если контрольная сумма нужна - есть библиотеки для crc. но сжатие тут уже вообще ортогонально.

bmfx
()
Ответ на: комментарий от Vit

А можешь присоветовать куда копать про сжатие фонтовых глифов?

Тру-тайп. Кривые Безье. Сплайн. Арифметика с фиксированной запятой. Бери лопату и фигач.

anonymous
()
Ответ на: комментарий от bmfx

есть библиотеки для crc.

Тогда уж hamming на прямую пользовать. Ну коли речь за восстановление.

anonymous
()
Ответ на: комментарий от bmfx

так речь не о новом способе сжатия, а о новом формате.

xmikex ★★★★
()
Ответ на: комментарий от anonymous

эээ… не знаю, толи у меня плохо с изложением, толи у тебя с чтением, но я про то и писал что все варианты lz - одномерные. что zip (для которого deflate является самым мощным вариантом), что перечисленные мной альтернативы.

bmfx
()
Ответ на: комментарий от bmfx

но сжатие тут уже вообще ортогонально.

Rar ECC во всю пользует и все довольны. Почему бы и не здесь пользовать? Ну коли формат аля продвинутый?

anonymous
()
Ответ на: комментарий от xmikex

Они еще и научились текст в PDF печатать в 2 колонки? Сразу видно, серьезные посоны.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Чернобелые с антиалиасингом.

pack -> Антиалиасинг убрать. CCITT Group 4. unpack -> Антиалиасинг восстановить.

anonymous
()
Ответ на: комментарий от anonymous

выкинуть все эти маня потуги в сжатие, рисовать картинку по текстовому описанию нейросеткой на клиенте. хуже жопега <80% уж не будет

anonymous
()
Ответ на: комментарий от anonymous

Антиалиасинг убрать

Еретик!

anonymous
()
Ответ на: комментарий от anonymous

нейросеткой на клиенте

Странное пользование нейросеткой. Чем дальше, тем странее и странее…

anonymous
()
Ответ на: комментарий от anonymous

Дежавю не надо вспоминать, оно (состояние дежавю) само приходит.

anonymous
()

больше по размеру

когда необходима скорость

То есть формат не для internet

grem ★★★★★
()
Ответ на: комментарий от EXL

этот проигравший WebP

Здравствуй, друг … Напрасно вы так, у WebP большое будущее …

Владимир

anonymous
()
Ответ на: комментарий от grem

Ты живешь (думаешь, что живешь) в другом интернете.

Тут «как бы необразованный» чувак написал хрень, и получилось несильно хуже «гигантов мысли», а местами сильно лучше. Вот такой вот интернет.

anonymous
()
Ответ на: комментарий от anonymous

Лев Толстой. Возьми да проверь сам. Остальные варианты только на словах. И по другому никак. Давай, шементом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.