Pull to refresh

Comments 71

Графики, графики, графики и ни одного примера реального сравнения изображений, производительности кодирования.декодирования и вот этого всего. Хотя, видео по ссылке выглядит многообещающе.
(по ссылкам на Хабр далеко не ходил — там Ализар и его коллега)
Так с реальными примерами вау-эффекта не будет. Проблемы со скоростью кодирования, нужно подбирать изображения, чтоб был заметный эффект…
Так это же lossless формат. Как вы себе представляете сравнение двух абсолютно одинаковых изображений?
Сколько уже было подобных форматов «На хх% лучше JPEG/GIF/PNG при таком же качестве», а воз и ныне там.
Большая часть предыдущих «убийц JPEG» не обладала патентной чистотой. И естественно имела околонулевые шансы на попадание в откртые браузеры.
Upd: посмотрел на сайте лицензию. LGPL3. Расходимся.
Если прочесть текст рядом с лицензией, то становится очевидным, что ею покрыта только примерная реализация (reference implementation) алгоритма FLIFF. Никто не мешает написать свою реализацию, под другой лицензией.
Получается про лицензию на сам формат ничего не сказано? Так это еще хуже.
Можно почитать тут и далее по ссылке. Но таки непонятно, да.

https://github.com/FLIF-hub/FLIF/issues/3
UFO just landed and posted this here
WebP — открытый формат, который был ещё до BGP и FLIF, с поддержкой гиганта Google. Тем не менее, до сих пор его поддержку никто не торопится внедрять даже в браузеры.

Сейчас большинство «JPEG» от Гугла идёт с WebP внутри.

Постойте, но ведь… caniuse.com/#feat=webp
иии? кроме гугловского хрома и его приспешников никто поддержку не реализовал. Реальность такова, что каждый игрок поддерживает разные форматы:
chrome — WEBP
IE — JPEG XR
Safari — JPEG 2000

Lossless формат — идеальный формат для изображений? Что только не напишешь в погоне за просмотрами и комментариям.

Для обычных фотографий, где можно допустить частичные потери, лучше подходит JPEG.

Преимущество FLIF заключается в том, что он хорошо работает для разных типов изображений.

@sunnybear, вы же разработчик WEBO, вы писали книгу по оптимизации сайтов в том числе изображений. Я не понимаю, как вы можете писать такую ахинею.

Можно развернуто мысль написать? За тремя цитатами и двумя шаблонными фразами я мысли не увидел :)

Jpeg — формат сжатия с потерями. Меняя уровень потерь, который мы читаем приемлемым, мы можем получить результат хоть в 10 раз меньше, хоть в 100. FLIF — формат сжатия без потерь. Там даже в названии это написано. «Без потерь» значит не то, что «он такой клевый, что когда сжимает, не появляется потерь», а что он намеренно так сжимает, чтобы потерь не было. Это принципиально другой способ сжатия, нежели в джипеге. При всем желании мы не добьемся от Флифа приемлемого размера для многих типов изображений, где много деталей, но их сохранение один-в-один не требуется. А вы предлагаете заменить Jpeg Флифом.

Прочитал статью еще два раза. Не увидел, кто я «предлагаю заменить Jpeg Флифом». Вы ничего не перепутали?

Безусловно, JPEG может быть меньше FLIF. Но речь в сравнении не об этом. WebP при сравнимой качестве сжатия с потерями дает меньший размер. FLIF в некоторых случаях может дать размер еще меньше без потери качества — когда мы можем предсказать изображение с большой точностью. И задача веб-разработки — двигаться в сторону меньших по размеру представлений информации. Иначе с Марсом будет тяжело связываться :)
Прочитал статью еще два раза. Не увидел, кто я «предлагаю заменить Jpeg Флифом». Вы ничего не перепутали?

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

Иногда слова — это просто слова, а не то, что хочется за ними видеть. Удачи!

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

Направьте свою энергию в другое русло, не нужно меня троллить. Я написал ровно то, что написал. Прочитайте, осознайте, подумайте.
Но мы пойдем дальше: какую еще практическую пользу несет формат, кроме меньшего размера для любого типа изображений?

Всё же стоит уточнить, что не для любого, а для тех, где требуется lossless. Ну или пояснить детальнее, чему именно любого, и тогда да, придётся таки полноценно сравнить с jpeg. А ещё я думаю стоит избегать глаголов в повелительном наклонении (это я уже про комментарии).

Спасибо, теперь понятно, какая фраз читается двусмысленно. Изменил.

Скажите, а больше вы подобных фраз в тексте не видите?


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

Вижу. Вас задели эти фразы? Прошу прощения.
«FLIF – идеальный формат для изображений?» Это вопрос. Возможный ответ — «Идеальный формат для некоторых типов изображений». Но грамотный читатель сам должен на него ответить.

«Работает для любого типа изображений.» В некоторых случаях достигается существенный выигрыш в размере. Не во всех, не всегда. Но все типы изображений можно преобразовать, чтобы понять, стоит ли использовать FLIF для них. «Полевое» использование формата даст более развернутый ответ, в каких случаях он не работает.

«Преимущество FLIF заключается в том, что он хорошо работает для разных типов изображений.» Именно так. Не всегда идеально, но работает. Хорошо работает для разных типов — и PNG, и GIF, и 16 цветов, и WebP, и JPEG. Для разных. Иногда хорошо. Работает.
Не во всех, не всегда. Но все типы изображений можно преобразовать, чтобы понять, стоит ли использовать FLIF для них.

Зачем преобразовывать в Флиф фотографии, чтобы понять, стоит ли его использовать? Для фотографий он очевидно не подходит. И это не какой-то сложный синтетический случай, это на вскидку 80% существующих на земле изображений, хранящихся в файлах.

Я не понимаю, почему фотографии обязательно сохранять с потерями?
Зачем и кому это нужно? Место сейчас стоит копейки, а восстановить данные из пожатого jpeg невозможно! Почему формат сжатия без потерь не подходит для фотографий?
Место сейчас стоит копейки

Ну да и вас есть выбор: разместить на этом месте в 5 раз больше фотографий или сохранить на память всё несовершенство матрицы, ошибки фильтр Байера и прочей постобработки, ведь это всё так важно, эти данные иначе уже потом не восстановить.

UFO just landed and posted this here
UFO just landed and posted this here
FLIF поддерживает сжатие с потерями. Когда это нужно.
http://flif.info/lossy.html
UFO just landed and posted this here

Спасибо за ссылку, очень интересно. Авторы не совсем утверждают, что «лучше джипега», они говорят:


In our opinion, at low qualities and for photographs, dedicated lossy formats like WebP, JPEG or BPG still produce better results. However, at very high-quality, we think lossy FLIF is a better option.
Скорее всего речь о том, что фотографии являются частью разных типов изображений.
Вот почему, когда выходит очередная статья про убийцу jpg, на первое место всегда ставят степень сжатия. Это, конечно, важно, но в наше время размер файла всё больше уходит на второй план.
Гораздо важнее, на мой взгляд, какой функционал может предложить формат. Например, WebP предлагает просто огромное множество функционала: от сжатия с альфа-прозрачностью, до анимаций.
WebP предлагает просто огромное множество функционала

Мне так не показалось. Кол-во бит на канал фиксировано, конвертация в YCbCr обязательна, даже 2x2 chroma subsampling обязателен. Не очень-то много простора, чтобы разгуляться.

UFO just landed and posted this here
На офсайте сабжа есть и сравнение качества и про фичи типа анимации.
А вот сравнения производительности я сходу не обнаружил. Да и целых две статьи (за октябрь 2015-го и сентябрь 2016-го) в разделе «публикации» наводят на мысль о нишевом характере.
UFO just landed and posted this here

Знаешь, тут я скорее на стороне нового стандарта. Так как:


  1. Сейчас важнее энергозатраты на передачу изображения по сети до пользователя, куда входит:
    1.1 Передача сжатого изображения (т.е. нагрузка на 2/3/4/5G, расходы на расшифровывание https трафика и т.д.)
    1.2 Декодирование
  2. Вычислительные мощности последнее время серьезно выросли, а вот объем памяти на устройствах — не так. Точнее, в компьютерах он может быть вырос, однако к нам еще добавилось громадное число носимых устройств.

То есть получается, что если стандарт позволяет потратиться на кодировании, но зато экономить на хранении и передачи, то это уже плюс для IT в целом.

UFO just landed and posted this here
Скорость сжатия практически не важна, т.к. в основном изображения декодируют, т.е. расжимают. Вот график производительности декодирования меня больше всего интересует.
Ну и также наличие альфа канала и разные режимы цвета (sRGB, Y422, ещё какие-нибудь).

Y422 — это chroma subsampling? К данном формату не имеет никакого отношения, потому что во-первых он RGB, во-вторых, loseless.

В более широком смысле — возможность иметь разное количество бит на канал.
Скорость сжатия практически не важна, т.к. в основном изображения декодируют, т.е. расжимают.

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

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

Чем ваша статья отличается от статьи годовой давности? Графики те же. КДПВ та же… А технических подробностей даже меньше, чем у Ализара.

Анимацию опять забыли. Не взлетит.
Не забыли, на ней даже частичная загрузка работает: http://flif.info/animation.html
Ну это, кстати, не всегда плюс. В случае достаточно длинной анимации с деталями (например, презентации или смешной гифки) может быть лучше загрузить полностью N кадров прежде чем начать воспроизведение. По той же стратегии, как загружают видео. И в таком случае FLIF вообще не подойдёт, ведь каждый кадр размазан по всему файлу. Или есть опция последовательно расположить кадры?
а так ли нужна анимация?
Когда-то давно был такой формат gif — формат запатентованный, небесплатный, устаревший, с не самым лучшим качеством сжатия, с ограниченным количеством поддерживаемых цветов. Собрались умные люди и сделали ему замену — png, по всем параметрам лучше. Но поддержку анимации решили не делать — не так уж она и нужна, решили умные люди. Вот мы до сих пор и пользуемся для анимаций форматом gif — ещё более устаревшим, с плохим качеством сжатия, с ограниченным количеством поддерживаемых цветов. Но лучшего пока ничего нет. Пытались приделать к png костыль для анимаций — apng, но не прижилось.
Я может быть вас удивлю, но видеокодеки замечательно справляются с анимацией. Настолько замечательно, что на ряде сайтов загруженые GIFки отдаются посетителям в виде mp4 — и объём раз в шесть меньше, и управляемость отличная.
Разве что совсем мелочь типа анимированных смайликов и курсоров через видео реализовать не получится.
Да-да, костыль на костыле, к тому же ещё и проприетарный.
Все упирается в поддержку броузеров.

В свое время микрософт забила поддерживать PNG и SVG в, тогда еще очень популярном, IE — отбросила их распространение на несколько лет.
Не только браузеров, графических редакторов тоже. Ибо пользоваться отдельным конвертером — это не только потеря лишнего времени(не спорю, все можно автоматизировать).
Пробовал его.
1) Сравнительно медленный.
2) На iOS как-то странно собрался — то изображение не сможет декодировать, то сегфолтится.

Year 2017: MIP detalization reinvented.
Вопрос: почему так долго и не поздно ли уже при текущих каналах связи интернет?

В былые времена на хабре в такой статье бы написали про алгоритмы внутри этого флифа.

Не было такого. Иногда бывает, что кто-то пишет, но в целом уровень не меняется. Кроме синдрома «трава зеленее».
А есть standalone версия конвертора? Просто для ощущения масштаба и сложности. (Плюс, хочется потыкать fuzzer'ом).
Я гонял FLIF на 16 битных зашумлённых рентгеновских картинках, и должен заметить, что ни о каких «На 53% меньше, чем JPEG 2000, без потерь» речи не идёт. Теорему Клода Шеннона в общем-то никто не отменял и чудес не бывает. Он жмёт, пожалуй, немного лучше чем JPEG2000 и по степени сжатия сравним с JPEG-LS (на тех картинках, что у меня). Алгоритму CALIC он скорее всего проиграет.
Но он очень медленный. Понятно, что можно много чего оптимизировать, но он даже медленнее JPEG2000, причём едва ли не в разы. Если при тесте сжатия набора картинок JPEG-LS я успевал покурить, то в случае FLIF можно успеть пообедать.
Ещё такой момент — это, похоже, near lossless алгоритм. То есть можно включить режим сжатия с потерями, но если захочется, скажем пятидесятикратного сжатия (как умеет JPEG2000), то FLIF так не сможет (по крайней мере я вроде закрутил все параметры до отказа, но сжатие с потерями там было сравнимо с JPEG-LS).
Приятный момент — он поддерживает маску регионов интереса, ну то есть можно сделать области с переменным сжатием — важные части жать без потерь, а неважные — с потерями (JPEG2000 тоже так умеет).
Есть специфические картинки, на которых он даёт может дать выигрыш (скажем, довольно большие области залиты константой), но в общем случае сравним с известными методами.
Комментарий, который лучше статьи
Еще в 2015 году скачал, собрал и даже установил этот кодек. Но вскоре удалил. Поскольку сразу не вспомнил, почему, сегодня сделал pull, собрал и установил еще раз ради проведения экспериментов. В качестве объекта отсканировал кучку попавшегося под руку «мусора» — DVD-RW, CD-R, скрепки и кусок двадцатки РБ. Сканировал в pnm 8 бит на сэмпл, фокус на стекле. В результате получилось 12 файлов общим объемом 154932636 байт (~150Mб).
Сжатие осуществлялось несколькими «ванильными» кодеками, которые установлены у меня, конвертером ImageMagic в png и кодеком flif. Результаты в табличке.

компрессор  размер	время_сжатия	время_восстановления 
gzip 	    102016362    10.2 	         1.95
lzma 	     73887952 	110 	         7
bzip2 	     68756125 	 16.5 	         8.1
im png 	     55849652 	 68 	         2.4
flif 	     45551350 	300 	        31.5


Итого, FLIF жмет в 1.2 раза плотнее, чем png. Но с производительностью — абсолютная полная огурцов — в PNG изображение сжимается в 4.4 раза быстрее, а восстанавливается в 13 раз быстрее. Если учесть, что время сжатия в WEB никого кроме хозяина сайта не волнует, то имеем следующее — время, сэкономленое на доставке пользователю контента в формате FLIF за счет более плотного сжатия, будет потрачено на восстановление оригинального растра для его отображения. В моем примере разница в объеме передаваемых данных равна 10298302 байта (~10Mб), а разница во времени восстановления — 29 секунд. Это значит, что в результате от замены PNG на FLIF пользователь выиграет только в том случае, если пропускная способность сети будет 350 кбайт в секунду и меньше. Вот и все, что нужно знать о FLIF.
Да, еще кодек flif при сжатии стрипает метаданные оригинальных файлов. Соответственно, восстанавливается совершенно не то, что было сжато.

Еще в 2015 году скачал, собрал и даже установил этот кодек.
время, сэкономленое на доставке пользователю контента в формате FLIF за счет более плотного сжатия
Вот и все, что нужно знать о FLIF

Просто напомню, что FLIF, что BPG, что PIK, что другие экспериментальные форматы - они лишь показывали проблему, и не предлагались как полноценное решение.
В 2019 была представлена версия 1.0.0 формата AV1 Image File Format (AVIF), который уже предполагался как стандарт, открытый и свободный от лицензионных притязаний.

На конец 2023 года у avif поддержка в браузерах 88%, включая safari на ios.
https://caniuse.com/?search=avif

Современные ОС и софт уже тоже умеют в avif.

Sign up to leave a comment.