Как стать автором
Обновить

В Opera Mini появилось два режима компрессии данных

Браузеры


Мобильный браузер Opera Mini теперь предлагает пользователю два разных режима компрессии данных: Extreme Mode и High mode. Оба в конечном счёте направлены на уменьшение размера данных запрашиваемых веб-страниц, что может быть востребовано при ограниченных и дорогих объёмах мобильного трафика. Разница между режимами заключается в том, насколько каждый из них сжимает данные и тем самым насколько конкретная веб-страница теряет от своего первоначального вида за счёт удаления из разметки «некритичных» фрагментов.
Узнать подробности
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 5K
Комментарии 4

ТиП Звука #49

Чулан
— Alesis PROTRACK для порто–записи
— Mackie U.420D самые теплые рекомендации
— Вопрос о шуме в тракте
— А что за инсерты такие?
— И еще раз о компрессии
— Пренаправление звука в аудиоконферециях

Подписка на подкасты
Всего голосов 22: ↑19 и ↓3 +16
Просмотры 224
Комментарии 4

Сжатие файлов (tar и LZMA) на стороне клиента

JavaScript *
Перевод
Артель BrowserPlus (из Yahoo) выпустила API для сжатия файлов на стороне клиента. Как объясняется в нижеследующем скринкасте, джаваскриптовый API позволяет вам упаковывать и сжимать файлы в клиенте посредством LZMA или tar.


    «Client Side Compression» выложил Lloyd Hilaiel на Vimeo

Вы можете читать далее о реализации или испытать демонстрацию живьём (потребуется BrowserPlus).

[Browser Plus add-on to pack on the client side]
    Прилад Browser Plus для упаковки на стороне клиента

Использовать этот API нетрудно: вызываем надобный метод и посылаем ему файлы:
BrowserPlus.Tar.tar({'files':files});
BrowserPlus.LZMA.compress({'files':files});
На GitHub доступны оба эти расширения — LZMA и tar.

Нюансы перевода:  слово «прилад», давно живущее в великорусском языке (как минимум, со времён Даля), здесь служит переводом технического термина «add-on» (а не «device», как в украинском), слово же «артель» означает команду разработчиков (в оригинале — «team»).
Всего голосов 48: ↑27 и ↓21 +6
Просмотры 2K
Комментарии 41

Покадровое сравнение H.264 и VP8

Работа с видео *
В связи с намечающимся противостоянием H.264 и «свободного» кодека VP8 довольно интересно сравнить, какой же из этих кодеков на самом деле лучше в реальном применении. Один из первых адекватных независимых тестов провели ребята из Streaming Media: они взяли стандартный тестовый файл, с помощью Squish сжали его с одинаковым битрейтом кодеками H.264 и VP8, после чего сравнили по кадрам результат.
Читать дальше →
Всего голосов 110: ↑96 и ↓14 +82
Просмотры 12K
Комментарии 103

Наш опыт участия в 10K Apart или как ужать 40 Кбайт кода в 10

Разработка веб-сайтов *
Не так давно на Хабре уже писали о контесте 10К Apart — соревновании на лучшее веб-приложение общим объемом до 10К, созданное с использованием только клиентских технологий: (HTML, CSS, Javascript, SVG и т.д).

image

Я хочу представить вашему внимаю нашу работу для этого контеста, которую мы с private_face делали по вечерам в течение двух недель: адвенчуру в стиле dungeon-crawler под названием «Fontanero» (исп. водопроводчик).
Читать дальше →
Всего голосов 266: ↑264 и ↓2 +262
Просмотры 8.3K
Комментарии 123

Защита JPEG от повторного сжатия

Алгоритмы *
Многие фотохостинги и веб-прокси пережимают файлы JPEG для ускорения загрузки. В связи с этим у специалистов из Кембриджа появилась идея адаптировать известный алгоритм Товальдса по защите купюр от копирования к JPEG-изображениям. Они разработали сетку, которая генерирует муар при повторном сжатии (демонстрация на примере Google WAP прокси).
Оригинальное изображение После рекомпрессии
Если вы находитесь за файрволом с рекомпрессиией, то надпись VOID будет на обоих изображениях.
Читать дальше →
Всего голосов 165: ↑132 и ↓33 +99
Просмотры 2.3K
Комментарии 78

SSP — Собственный алгоритм сжатия изображений без потерь

Алгоритмы *
Наконец–то появилась возможность опубликовать разработанный мною когда-то алгоритм. Алгоритм был разработан для программы автоматического снятия скриншотов. Для удобства дальнейшего его описания буду называть его – SSP (sciner screenshot packer). SSP можно справедливо сопоставить PNG, поэтому в статье я буду проводить сравнения именно с ним.

Алгоритм имеет два режима компресии:
  1. без потерь – в котором, изображения после декомпресии будет восстановлено с точностью до бита;
  2. с потерями – который не уменьшает качества картинки, просто в нем непосредственно перед сжатием, изображение переводится палитру YcbCr
    Только лишь за счет изменения палитры удается существенно улучшить сжатие. Использую следующие коэффициенты:
    cY = 0.30078125 * R + 0.5859375 * G + 0.11328125 * B
    cCb = -0.171875 * R - 0.33984375 * G + 0.51171875 * B + 128
    cCr = 0.51171875 * R - 0.4296875 * G - 0.08203125 * B + 128
Читать дальше →
Всего голосов 84: ↑80 и ↓4 +76
Просмотры 5.8K
Комментарии 52

Техники сжатия кода

JavaScript *
Перевод
Джед Шмидт, Томас Фухс и Дастин Диаз — достаточно известные в JavaScript-коммьюнити ребята в последнее время нашли себе новую развлекуху — писать полезные штуки размером не больше одного твита, то есть 140 байт. Даже домен зарегали — 140byt.es, куда приглашаются все желающие попробовать свои силы в написании супер-компактных функций.

Естественно, в ход идут все самые изощренные способы и техники уменьшения размера исходника. У них есть вики-страничка с советами, которую я и решил перевести.

Сразу оговорюсь, что читаемость обработанного таким образом кода стремится к нулю, так что использовать эти трюки стоит только в случаях, когда размер действительно превыше всего. Например, при участии в конкурсе JS1k.

Читать дальше →
Всего голосов 146: ↑140 и ↓6 +134
Просмотры 4.8K
Комментарии 121

Сжатие изображений с использованием вейвлет

Алгоритмы *
Вейвлетное сжатие — общее название класса методов кодирования изображений, использующих двумерное вейвлет-разложение кодируемого изображения. Обычно подразумевается сжатие с потерей качества. В статье не будет приведено сложных математических формул, всю теорию можно почитать по ссылкам внизу статьи. Здесь только практика!

Отличие от JPEG


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

Пример


Для примера сильно сожмем одно и тоже изображение приблизительно до одного размера:

В начале с использованием JPEG:
7959 байт
(7959 байт)

затем алгоритмом вейвлетного сжатия JPEG 2000:
7813 байт
(7813 байт)

Читать дальше →
Всего голосов 155: ↑133 и ↓22 +111
Просмотры 25K
Комментарии 77

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Настройка Linux *
В Linux часто используется сжатие с помощью gzip и bzip2. Они оба обеспечивают хорошую плотность сжатия, и удобны в использовании. При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, работает медленнее, чем более традиционные gzip или zip.

Но можно получить эффективность bzip2, при этом существенно увеличив скорость. Речь идёт об утилите pbzip2 — Parallel BZIP2. В обычном случае при использовании bzip2 задействуется только одно процессорное ядро, в то время как на современных системах их может быть 2, 4, или, например, 8.

Pbzip2 может использовать сразу несколько процессорных ядер, что приводит, по заявлению авторов, к почти линейному увеличению производительности. Сжатые файлы, которые создаёт pbzip2, полностью совместимы с bzip2 1.0.2 и более новыми версиями bzip2 (также есть утилита pigz, которая, в свою очередь, является многопоточной реализацией gzip — спасибо altexxx).

Ниже результат тестирования скорости сжатия участка SQL-файла размером 1000M (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота 2,26 ГГц):

Результаты тестирования

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, приблизительно в 3,6 раз быстрее, чем bzip2, работающий в один поток — что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости выполнения операций ввода/вывода. Также смотрите дополнительные тесты в комментариях (спасибо tristan и bliznezz) — в том числе, с использованием tmpfs-раздела в оперативной памяти.

Используется pbzip2 примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Всего голосов 58: ↑51 и ↓7 +44
Просмотры 15K
Комментарии 17

Новый алгоритм Zopfli улучшает сжатие zlib на 3-8%

Разработка веб-сайтов *Алгоритмы *
Один из сотрудников Google в свободное время разработал новый алгоритм сжатия Zopfli, который на 3,7-8,3% эффективнее, чем стандартная библиотека zlib на максимальном уровне сжатия. Изначально алгоритм создавался для формата сжатия без потерь WebP, но его можно применять и для другого контента.

Новый алгоритм является реализацией стандартных алгоритмов Deflate, поэтому он совместим с zlib и gzip, а разархивирование данных уже поддерживается всеми браузерами. Достаточно подключить Zopfli на сервере. Например, его можно использовать с веб-сервером Nginx без изменений в модуле gzip, просто указав новый «прекомпрессор».

Правда, сжатие с помощью Zopfli требует примерно в 100 раз больше ресурсов, чем gzip, зато декомпрессия в браузере осуществляется с той же скоростью.
Читать дальше →
Всего голосов 62: ↑59 и ↓3 +56
Просмотры 21K
Комментарии 42

Portable Network Javascript

Ненормальное программирование *Разработка веб-сайтов *Обработка изображений *
Из песочницы

Приукрасим забытое старое


Для начала — небольшая картинка в качестве эпиграфа. Продолжение — под катом.

image
Читать дальше →
Всего голосов 116: ↑94 и ↓22 +72
Просмотры 34K
Комментарии 34

Работа с компрессией текстур в Unity3D + NGUI

Разработка игр *Unity *
Recovery mode
Привет Хабровчане!

Это мой первый, но надеюсь не последний пост на хабр, так что не судите строго.

Хотелось бы поделиться разработкой, которую мы успешно внедрили у себя в Heyworks и используем на проекте Pocket Troops (Неудержимые). Проблема, с которой сталкивались и сталкиваются все разработчики, при чем не только работающие с NGUI и Unity3d, но и с другими движками и пакетами, это поиск золотой середины между качеством и весом игровых интерфейсов (впрочем, это не только интерфейсов касается). В этой статье я постараюсь помочь убить двух зайцев одной пулей.
Кому интересно, добро пожаловать под кат.
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 16K
Комментарии 26

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

Java *Обработка изображений *
Из песочницы
Предлагаю вашему вниманию перевод статьи Neural Network As Predictor For Image Coding (PNG). Блог автора находится здесь.

Тема исследования


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

Сжатие


Классически PNG-компрессия делится на два шага:

  1. Предварительная фильтрация (с использованием предикторов);
  2. Компрессия (с помощью DEFLATE).

В данной статье важен только первый шаг. На рисунке ниже вы можете видеть существующие на данный момент предварительные фильтры, и как они сохраняют разницу между реальным и предсказанным пикселем.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 14K
Комментарии 8

Unity: сжимая сжатое

Работа с 3D-графикой *Разработка игр *C# *Unity *

Результат: информация о цвете занимает 1/64 от исходной площади при достаточно высоком качестве результата. Тестовое изображение взято с этого сайта.

Текстуры практически всегда являются наиболее значимым потребителем места как на диске, так и в оперативной памяти. Сжатие текстур в один из поддерживаемых форматов относительно помогает в решении этой проблемы, но что делать, если даже в этом случае текстур очень много, а хочется еще больше?
Что же делать?
Всего голосов 70: ↑69 и ↓1 +68
Просмотры 27K
Комментарии 69

Сжатие фотографий без видимой потери качества: опыт Yelp

Серверная оптимизация *Хранение данных *Сжатие данных *
Перевод
На Yelp хранится более 100 миллионов пользовательских фотографий, от картинок ужинов и причёсок до одной из наших последних фич, #yelfies. Эти изображения составляют основную часть трафика для пользователей приложения и веб-сайта, а их хранение и передача обходятся недёшево. Стараясь предоставить людям наилучший сервис, мы усиленно работали над оптимизацией всех фотографий и добились среднего уменьшения размера на 30%. Это экономит людям время и трафик, а также сокращает наши расходы на обслуживание этих изображений. Ах да, и мы сделали это без ухудшения качества фотографий!

Исходные данные


Yelp хранит пользовательские фотографии уже 12 лет. Мы сохраняем lossless-форматы (PNG, GIF) как PNG, а все остальные форматы в JPEG. Для сохранения файлов используются Python и Pillow, а загрузки фотографий начинаются примерно с такого сниппета:

# do a typical thumbnail, preserving aspect ratio
new_photo = photo.copy()
new_photo.thumbnail(
    (width, height),
    resample=PIL.Image.ANTIALIAS,
)
thumbfile = cStringIO.StringIO()
save_args = {'format': format}
if format == 'JPEG':
    save_args['quality'] = 85
new_photo.save(thumbfile, **save_args)

Читать дальше →
Всего голосов 28: ↑28 и ↓0 +28
Просмотры 20K
Комментарии 6

Принципы обработки студийного звука и легенды динамической компрессии

Блог компании Leader-ID Звук

Давно хотели разобраться с базовыми принципами обработки звука — всеми этими компрессорами, лимитерами, экспандингом и дисторшеном? Прозрачностью и ламповостью звука? Я попыталась разложить все по полочкам про сам звук и про то, что с ним делают студийные системы. Плюс кратко рассказать о тех легендах, которые с 1960-х годов помогали стать знаменитыми Джимми Хэндриксу, Beatles, Beyonce, Rolling Stones, и привести примеры обработанного ими звука.

В итоге получился лонгрид, но пугаться не стоит. Особо сложных понятий и деталей в тексте нет. Хотя…

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Просмотры 19K
Комментарии 17

Реализация кэш-компрессии по алгоритму base+delta

Высокая производительность *GitHub *FPGA *Процессоры Инженерные системы *
Из песочницы

Существенную часть кристалла современных ЦП занимает кэш-память. Дальнейшее увеличение кэш-памяти без изменения технологических норм приведет к соответствующему увеличению кристалла. Одним из способов увеличения объема хранимой информации в кэше без увеличения самого кэша является использование алгоритмов компрессии. Среди них выделяются алгоритмы Base+Delta и Base-Delta-Immediate. Данная статья посвящена реализации первого алгоритма.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 1.9K
Комментарии 8