Pull to refresh

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

Browsers


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

ТиП Звука #49

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

Подписка на подкасты
Total votes 22: ↑19 and ↓3 +16
Views 214
Comments 4

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

JavaScript *
Translation
Артель 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»).
Total votes 48: ↑27 and ↓21 +6
Views 1.9K
Comments 41

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

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

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

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

image

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

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

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

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

Algorithms *
Наконец–то появилась возможность опубликовать разработанный мною когда-то алгоритм. Алгоритм был разработан для программы автоматического снятия скриншотов. Для удобства дальнейшего его описания буду называть его – 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
Читать дальше →
Total votes 84: ↑80 and ↓4 +76
Views 5.8K
Comments 52

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

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

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

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

Читать дальше →
Total votes 146: ↑140 and ↓6 +134
Views 4.7K
Comments 121

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

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

Отличие от JPEG


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

Пример


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

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

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

Читать дальше →
Total votes 155: ↑133 and ↓22 +111
Views 25K
Comments 77

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

Configuring 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, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Total votes 58: ↑51 and ↓7 +44
Views 15K
Comments 17

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

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

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

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

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

Game development *Unity3D *
Recovery mode
Привет Хабровчане!

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

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

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

Java *Image processing *
Sandbox
Предлагаю вашему вниманию перевод статьи Neural Network As Predictor For Image Coding (PNG). Блог автора находится здесь.

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


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

Сжатие


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

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

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

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

Working with 3D-graphics *Game development *C# *Unity3D *

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

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

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

Server optimization *Data storage *Data compression *
Translation
На 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)

Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 19K
Comments 6

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

Leader-ID corporate blog Sound

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

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

Читать далее
Total votes 23: ↑22 and ↓1 +21
Views 17K
Comments 17