Pull to refresh

Главное — скорость. Новый графический формат QOI в 20−50 раз быстрее PNG

Reading time10 min
Views9.7K


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

Поскольку польский разработчик Доминик Шаблевски вообще не разбирается в кодировании изображений, то он написал примитивный метод сжатия изображений без потери качества всего в 300 строчек кода, на базовой математике. Результат его очень удивил.
Читать дальше →
Total votes 60: ↑58 and ↓2+56
Comments16

Новый формат изображений WebP2 будет сжимать на 30% лучше, чем обычный WebP

Reading time3 min
Views4.1K


Сравнение сжатия WebP без потерь с различными кодерами PNG, источник: Smashing Magazine

Инженеры Google начали экспериментировать с новым форматом сжатия изображений WebP2, следующим поколением формата файлов WebP.

Общепризнанная поддержка WebP пока продвигается очень медленно. Например, браузер Firefox добавил поддержку WebP только в 2019 году в версии Firefox 65, а некоторые CMS (и Habrastorage) до сих пор полностью его не поддерживают. В результате многие сайты по-прежнему публикуют изображения в старых и/или проприетарных форматах GIF, JPEG и PNG, генерируя лишний трафик.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments17

Код youtube-dl распространяют на альтернативных платформах, в виде картинок и с помощью уязвимости GitHub

Reading time2 min
Views16K


Разработчики и энтузиасты начали распространять код youtube-dl на альтернативных платформах. Кроссплатформенный свободный проект с открытым исходным кодом на Python теперь доступен для скачивания в виде пары картинок формата png.
Total votes 24: ↑23 and ↓1+22
Comments21

Опубликованы спецификации графического формата QOI, который в 20–50 раз быстрее PNG

Reading time3 min
Views4.7K
Примерно месяц назад польский программист Доминик Шаблевски представил на суд публики новый графический формат QOI (Quite OK Image). Формат сжимает без потери качества, ориентируется на максимальную скорость кодирования/декодирования изображений, и по бенчмаркам значительно превосходит libpng и stbi. Разница в сжатии составляет 20−50 раз, в декомпрессии — 3−4 раза.

Кроме того, формат сжатия исключительно простой, закодирован буквально в 300 строчек кода, и работает по простым правилам типа кодирования повторов (RLE). Естественно, он не связан никакими лицензионными соглашениями и ограничениями.

И вот вчера после исправления всех недочётов наконец-то опубликованы финальные спецификации, так что теперь QOI документально забетонирован и его можно начинать использовать в продакшне. Что примечательно, полные спецификации QOI поместились на одной странице!
Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments14

Пользователи смартфонов Google Pixel столкнулись с aCropalypse — багом в редакторе изображений Markup

Reading time2 min
Views4.5K


Пользователи смартфонов Google Pixel (моделей от 3 до 7 версии) столкнулись с проблемой под названием aCropalypse. Это уязвимость (CVE-2023-21036) в штатном редакторе изображений Markup при обработке картинок в формате PNG. Из-за этого бага становится доступна информация из ранее отредактированного файла пользователем. То есть после выполнения команды Crop (обрезка) или ретуширования и сохранения изменений можно просмотреть оригинальный файл.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments4

В Windows 11 инструмент «Ножницы» (Snipping Tool) не удаляет до конца старые данные из файла при обрезке и сохранении

Reading time2 min
Views3.9K


Эксперты обнаружили, что в Windows 11 инструмент «Ножницы» (Snipping Tool) не удаляет старые данные из файла при обрезке изображения из скриншота и сохранении в формате PNG. А в случае, если пользователь с помощью этого инструмента пытается перезаписать другой файл PNG без редактирования, то размер файла увеличивается, так как туда добавляется информация после фрагмента PNG IEND.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments8

Microsoft исправила баг в «Ножницах» (Snipping Tool), когда инструмент для скриншотов не удалял до конца старые данные

Reading time2 min
Views1.6K


Microsoft исправила баг в приложении «Ножницы» (Snipping Tool), когда инструмент для скриншотов в Windows 10/11 не удалял до конца старые данные из файла при обрезке и сохранении.
Читать дальше →
Total votes 4: ↑3 and ↓1+2
Comments1

Microsoft исправила уязвимость CVE-2023-28303 в приложении «Ножницы» (Snipping Tool) для Windows 10/11

Reading time3 min
Views3.5K
image

24 марта Microsoft оперативно исправила уязвимость CVE-2023-28303 в приложении «Ножницы» (Snipping Tool) для Windows 10/11. В компании оценили этот баг по шкале CVSS в 3.3 балла (низкая степень опасности). Эксперты наоборот считают, что ошибка в «Ножницах» представляет собой серьёзную проблему конфиденциальности данных.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments2

Насколько опасна JavaScript-криптография?

Reading time4 min
Views5.2K


Каждые несколько лет среди специалистов по безопасности поднимаются дискуссии о вреде JS-криптографии. Сейчас они возобновились. Что стало поводом и почему у некоторых специалистов такое предубеждение к криптографическим операциям в браузере? Попробуем разобраться.
Читать дальше →
Total votes 29: ↑15 and ↓14+1
Comments8

Самый быстрый и безопасный PNG декодер в мире

Level of difficultyHard
Reading time16 min
Views6.7K

Декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng (широко используемая реализация PNG декодера на C с открытым исходным кодом), C-библиотеки libspng, lodepng и stb_image, а также самые популярные библиотеки для работы с PNG на Go и Rust.
Статья рассказывает о том, как именно достигается такая производительность.

Читать далее
Total votes 25: ↑24 and ↓1+23
Comments39

Что Chrome сделал с JPEG XL и почему делать этого не стоило

Reading time12 min
Views9.1K

Аргументы в защиту формата в лонгриде под катом — к старту курса по Fullstack-разработке на Python.



Разработчики Chrome недавно анонсировали своё решение о прекращении поддержки формата JPEG XL, который ранее был «убран за флажок». Это решение объясняется так:

Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments20

Картинки как коробки — что внутри? Доклад в Яндексе

Reading time19 min
Views12K
Картинки и видео — это «чёрные ящики», внутри которых лежит много интересного и непонятного. Но можно заглянуть внутрь некоторых форматов, всё там поменять и посмотреть, что из этого получится.

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


— Всем привет. Меня зовут Полина, я фронт в компании «Злые марсиане».
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments0

Сжатие (компрессия) изображений различный форматов

Reading time2 min
Views6.2K

Для того чтобы страницы сайта открывались быстро нужно использовать картинки как можно меньшего веса (размера файла). При этом, после компрессии качество изображений не должно сильно пострадать.

Чтобы выяснить, какой формат является оптимальным, мы провели тестирование форматов GIF, JPG, PNG и WEBP, и сравнили размеры получающихся файлов.

Методика тестирования


Компрессия осуществлялась на работающем сайте с помощью двух программ:
• Графическая библиотека GD, встроенная в PHP по умолчанию.
• Сторонняя программа ImageMagick и ее php-расширение Imagick.

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

Сразу скажем, что обе программы GD и Imagick дают одинаковый результат при одном и том же параметре качества (Q), поэтому все примеры приведены только для изображений, полученных в программе GD.

Реальные размеры для больших изображений 1600x900px, для миниатюр 400x225px — видимые размеры могут отличаться.

Миниатюрное изображения (thumbnail) 400x225px


По степени сжатия формат WEBP неоспоримый лидер.

Читать дальше →
Total votes 15: ↑4 and ↓11-7
Comments18

Практическая стеганография. Скрытие информации в изображениях PNG

Reading time5 min
Views43K


На хакерских конкурсах и играх CTF (Capture The Flag) иногда попадаются задачки на стеганографию: вам дают картинку, в которой нужно найти скрытое сообщение. Наверное, самый простой способ спрятать текст в картинке PNG — прописать его в одном из цветовых каналов или в альфа-канале (канал прозрачности). Для выявления подобных «закладок» есть специальные инструменты, такие как stegsolve, pngcheck и stegdetect, иногда конкурсантам приходится вручную повозиться с фильтрами в GIMP или Photoshop.

Однако прогресс не стоит на месте — и в последнее время всё чаще используются другие способы скрытия данных, например, PNG-наполнение. Посмотрим, как это делается.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments4

Делаем черный фон прозрачным без Photoshop и наложения screen

Reading time5 min
Views3.5K

Преобразуем картинку с черным фоном в прозрачный фон без хитрых наложений слоёв в Photoshop'е и сохраним в прозрачный PNG. Пример кода на JavaScript.

Кодим далее
Total votes 10: ↑4 and ↓6-2
Comments5

Сжимаем изображения без потерь: какой формат выбрать?

Reading time8 min
Views24K

Одна из тестовых фотографий, сжатие без потерь на 41%

Для сжатия изображений без потерь принято использовать PNG. Его обычно применяют для логотипов, скриншотов, диаграмм, где есть сплошные области с одинаковым цветом. Такие области сжимаются лучше всего: все lossless-кодеки используют классический RLE, то есть кодирование повторов. В некоторых случаях это обеспечивает даже лучший коэффициент сжатия, чем JPEG. И никаких искажений.

Но PNG не используют для фотографий — файлы слишком большие. Однако сейчас, с появлением кодеков нового поколения, ситуация должна измениться. Фотографии будут кодировать без потерь в файлы меньшего размера, а PNG наконец-то уйдёт на покой (см. результаты тестирования в конце статьи).
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments49

JavaScript редактор диаграмм, который открывает диаграммы из PNG картинок (open source)

Reading time3 min
Views7.7K

dgrm.net | GitHub

dgrm.net - это редактор диаграмм, с прицелом на трансформацию в карту знаний.

Отличительные особенности:
- аскетичность,
- работает на телефонах (одно из немногих web-решений),
- открытый исходный код.

В процессе разработки появляются интересные моменты. Статья про один из таких моментов: чтение данных из PNG.
Исходный код для использования в своих проектах прилагается.

Читать далее
Total votes 36: ↑36 and ↓0+36
Comments20

Храним отметки высот в XYZ tiles

Reading time4 min
Views2.1K

Цифровые модели поверхности и рельефа (ЦМП/ЦМР) – являются важной и неотъемлемой составляющей геоинформационных систем (ГИС). Они являются источником высотной информации и решают задачу определения высоты Z в указанной точке с координатами XY на местности. ЦМП и ЦМР могут быть как регулярными, так и нерегулярными (чаще всего их делят по формату хранения высотных отметок (растровые и векторные). Растровые ЦМП/ЦМР чаще всего поставляются в виде геопривязанного растра с типом пиксельных значений позволяющих хранить дробные отрицательные числа (32-bit float). Повсеместная реализация и внедрение информационных сервисов (прежде всего онлайн), делает необходимым отображение пользователям высотной информации в интерактивном режиме (определение Z при перемещении курсора XY) и ставит перед разработчиком задачу донесения этой информации. Если в случае с векторными данными, мы можем отобразить высотный пикет в координатах XY и показать записанный ему атрибут Z, то с растровыми (регулярными) моделями высот такое не выйдет, иначе мы должны хранить атрибут на каждый пиксель нашего растра (так никто не делает) или быть готовыми его рассчитать и вернуть пользователю с сервера. В принципе, эта задача решена показом на растровых тайлах высотных отметок или горизонталей в виде рисунка, но такой способ отображения высот не интерактивен и несет лишнюю нагрузку на картографическую составляющую тайлов.

Читать далее
Total votes 4: ↑3 and ↓1+2
Comments4

Webpack. Создание WebP вместе с Jpeg и Png

Reading time2 min
Views6.5K

Как вы знаете, формат изображений WebP в большинстве случаев имеет меньший вес, по сравнению со своими братьями: png и jpeg. Поэтому использовать его в своих приложениях - это хорошая практика.

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments15

Пошаговая инструкция: как с Node.js организовать иконки из Figma в проекте

Reading time28 min
Views6.9K


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


Скрипт может пригодиться командам, которые ещё не определились с общим подходом к использованию и хранению иконок в проекте, и тем, кто стремится автоматизировать этот процесс.


Под катом – довольно длинный (мы предупредили!) и подробный текст, но с большим количеством полезного кода.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments2