TGViewer
mefody.dev mefody.dev @mefody_dev · 5.39K subscribers
Post #182 4.9K
BlurHash

Наткнулся на интересный инструмент для создания плейсхолдеров для изображений. Часто на сайтах, где много картинок, используют подход, когда сначала грузится какое-то цветное пятно, отдалённо напоминающее оригинальную картинку, а потом это пятно заменяется на оригинал, когда браузер его уже докачал. Так пользователь видит что-то и понимает, что идёт загрузка.

BlurHash интересен тем, что по сути строка L6PZfSi_.AyE_3t7t7R**0o#DgR4 — это полноценная картинка. На сервере при сборке или загрузке картинки в ваше файлохранилище нужно запустить ecnode, который эту строку выдаст. А на клиенте нужно вызвать функцию decode, которая эту строку превратит в то самое цветное пятно, похожее на картинку.

Из минусов — это canvas. Подменять canvas на картинку тяжелее, чем просто внутри img подменить src. И для отрисовки этого canvas на клиент надо затащить тот самый скрипт, который превратит набор символов в картинку-пятно. То есть для статических сайтов и отрисовки LCP я бы это точно не использовал. И ещё нужно точно знать размеры картинок, что не всегда возможно.

Но если у вас SPA, которое пользователь крайне редко закрывает, при этом перемещается по страницам с картинками постоянно, то один раз в начале загрузить библиотеку (и закэшировать при помощи service worker) — и вот уже приятная экономия на скорости загрузки данных.

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

В GitHub проекта написано, что ими пользуются Mastodon, Signal. Конечно, для нативных приложений библиотека точно лучше подходит, но хочу попробовать как-нибудь воспользоваться для веб-проекта.

https://blurha.sh/
blurha.sh BlurHash is a compact representation of a placeholder for an image.
  • 👍 41
  • ❤ 6
  • 🔥 5
  • 🌚 3
  • 🎉 1
  • 🤨 1
  • 😐 1
More from @mefody_dev
  1. Sep 25, 2026Эффект одометра Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я…
  2. Sep 23, 2026Цена ошибок гидрации В React есть много ухищрений, чтобы серверный кусок страницы обновилс…
  3. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  4. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  5. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
  6. Sep 10, 2026MicroLighter Дейв Руперт собрал маленькую библиотечку, которая делает подсветку кода. «Ещё…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →