Что такое сжатые приложения

Простым языком о том, как работает сжатие файлов

Авторизуйтесь

Простым языком о том, как работает сжатие файлов

Сжатие файлов позволяет быстрее передавать, получать и хранить большие файлы. Оно используется повсеместно и наверняка хорошая вам знакомо: самые популярные расширения сжатых файлов — ZIP, JPEG и MP3. В этой статье кратко рассмотрим основные виды сжатия файлов и принципы их работы.

Что такое сжатие?

Сжатие файла — это уменьшение его размера при сохранении исходных данных. В этом случае файл занимает меньше места на устройстве, что также облегчает его хранение и передачу через интернет или другим способом. Важно отметить, что сжатие не безгранично и обычно делится на два основных типа: с потерями и без потерь. Рассмотрим каждый из них по отдельности.

Сжатие с потерями

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

MP3 содержит не всю аудиоинформацию из оригинальной записи. Этот формат исключает некоторые звуки, которые люди не слышат. Вы заметите, что они пропали, только на профессиональном оборудовании с очень высоким качеством звука, поэтому для обычного использования удаление этой информации позволит уменьшить размер файла практически без недостатков.

20–22 декабря, Онлайн, Беcплатно

Аналогично файлы JPEG удаляют некритичные части изображений. Например, в изображении с голубым небом сжатие JPEG может изменить все пиксели на один или два оттенка синего вместо десятков.

Чем сильнее вы сжимаете файл, тем заметнее становится снижение качества. Вы, вероятно, замечали такое, слушая некачественную музыку в формате MP3, загруженную на YouTube. Например, сравните музыкальный трек высокого качества с сильно сжатой версией той же песни.

Сжатие с потерями подходит, когда файл содержит больше информации, чем нужно для ваших целей. Например, у вас есть огромный файл с исходным (RAW) изображением. Целесообразно сохранить это качество для печати изображения на большом баннере, но загружать исходный файл в Facebook будет бессмысленно. Картинка содержит множество данных, не заметных при просмотре в социальных сетях. Сжатие картинки в высококачественный JPEG исключает некоторую информацию, но изображение выглядит почти как оригинал.

При сохранении в формате с потерями, вы зачастую можете установить уровень качества. Например, у многих графических редакторов есть ползунок для выбора качества JPEG от 0 до 100. Экономия на уровне 90 или 80 процентов приводит к небольшому уменьшению размера файла с незначительной визуальной разницей. Но сохранение в плохом качестве или повторное сохранение одного и того же файла в формате с потерями ухудшит его.

Посмотрите на этот пример.

Оригинальное изображение, загруженное с Pixabay в формате JPEG. 874 КБ:

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Результат сохранения в формате JPEG с 50-процентным качеством. Выглядит не так уж плохо. Вы можете заметить артефакты по краям коробок только при увеличении. 310 КБ:

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Исходное изображение, сохранённое в формате JPEG с 10-процентным качеством. Выглядит ужасно. 100 КБ:

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Где используется сжатие с потерями

Как мы уже упоминали, сжатие с потерями отлично подходит для большинства медиафайлов. Это крайне важно для таких компаний как Spotify и Netflix, которые постоянно транслируют большие объёмы информации. Максимальное уменьшение размера файла при сохранении качества делает их работу более эффективной.

Сжатие без потерь

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

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Вместо того чтобы показывать все 10 блоков, мы можем удалить все кирпичи одного цвета, кроме одного. Используя цифры, чтобы показать, сколько кирпичей каждого цвета было, мы представляем те же данные используя гораздо меньше кирпичей — три вместо десяти.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Это простая иллюстрация того, как осуществить сжатие без потерь. Та же информация сохраняется более эффективным способом. Рассмотрим реальный файл: mmmmmuuuuuuuoooooooooooo. Его можно сжать до гораздо более короткой формы: m5u7o12. Это позволяет использовать 7 символов вместо 24 для представления одних и тех же данных.

Где используется сжатие без потерь

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

Другие распространённые форматы без потерь — PNG для изображений и FLAC для аудио. Форматы видео без потерь встречаются редко, потому что они занимают много места.

Сжатие с потерями vs сжатие без потерь

Теперь, когда мы рассмотрели обе формы сжатия файлов, может возникнуть вопрос, когда и какую следует использовать. Здесь всё зависит от того, для чего вы используете файлы.

Скажем, вы только что откопали свою старую коллекцию компакт-дисков и хотите оцифровать её. Когда вы копируете свои компакт-диски, имеет смысл использовать формат FLAC, формат без потерь. Это позволяет получить мастер-копию на компьютере, которая обладает тем же качеством звука, что и оригинальный компакт-диск.

Позже вы, возможно, захотите загрузить музыку на телефон или старый MP3-плеер. Здесь не так важно, чтобы музыка была в идеальном качестве, поэтому вы можете конвертировать файлы FLAC в MP3. Это даст вам аудиофайл, который по-прежнему достаточно хорош для прослушивания, но не занимает много места на мобильном устройстве. Качество MP3, преобразованного из FLAC, будет таким же, как если бы вы создали сжатый MP3 с оригинального CD.

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

Проблемы во время сжатия файлов

Бесполезно конвертировать формат с потерями в формат без потерь. Это пустая трата пространства. Скажем, у вас есть MP3-файл весом в 3 МБ. Преобразование его в FLAC может привести к увеличению размера до 30 МБ. Но эти 30 МБ содержат только те звуки, которые имел уже сжатый MP3. Качество звука от этого не улучшится, но объём станет больше.

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

Заключение

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

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

Источник

Сжимаем несжимаемое – как уменьшить дистрибутив мобильного приложения

Сегодня в магазинах приложений для платформ iOS и Android существует ограничение на размер приложения в 100 МБ. Магазин Apple для приложений, которые не укладываются в этот лимит, запрещает закачку при помощи мобильного интернета. В Google Play же это строгий лимит на размер APK – все, что не укладывается в него, должно быть вынесено в файлы дополнений. Для пользователей с платным трафиком закачка большого приложения может быть довольно затратной, поэтому его размер нужно стараться уменьшить всеми силами.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Формат магазина приложений Apple

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

Оптимизация размера исполняемого файла

Исполняемый файл занимает так много места по двум причинам:

Пункт 2 актуален всегда. При расчете предполагаемого размера IPA нужно учитывать несжатый размер исполняемого файла. В лучшем случае он сожмется только незначительно. Именно поэтому Apple не рекомендуют хранить большие объемы данных (изображения, большие текстовые ресурсы и т.д.) в исполняемом файле, это может привести к аномально большому размеру приложения. Стоит также проверить настройки оптимизации в XCode и убедиться в том, что вы не подключаете лишние библиотеки.

Оптимизация ресурсов

Для мобильных игр можно выделить группы ресурсов, по списку от более тяжеловесных к менее тяжеловесным:

Сжатие игровой графики

Размер графики можно уменьшить двумя способами:

Во-вторых, pvrtc – это lossy-формат, и даже очень lossy. Его нужно применять осторожно, не стоит использовать с графикой, для которой требуется высокое качество. Плохо подходит для графики с прозрачными областями, на границе будут артефакты. Основная выгода от формата pvrtc – экономия оперативной памяти. В отличие от форматов png и webp, его не нужно распаковывать в RGBA для отрисовки.

Не стоит забывать о том, что у сжатых форматов есть свои настройки качества, и их тоже можно настраивать.

Webp 100Webp 95Webp 85
Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложенияЧто такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложенияЧто такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Пример сжатия

Пример одного и того же изображения в формате webp, сжатого с настройкой качества 85, 95 и 100. Разница заметна, но даже самое сжатое изображение выглядит приемлемо. При этом разница в размере между webp85 и webp95 примерно 3 КБ.

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

В таблице приведены размеры атласа 2048×2048 при сжатии в разных форматах:

Форматpngpvrtcwebp
lossless
webp
95 quality
webp
85 quality
Размер, КБ80572049559322181579

Как видите, формат png не следует использовать вообще. Из форматов webp и pvrtc можно выбрать подходящий, с учетом требований к качеству графики и скорости ее загрузки

Анимации

Видео и звуки

Здесь нет каких-то общих рекомендаций, в целом все сводится к тонкой настройке форматов кодирования. Какого-то феноменального выигрыша тут получить нельзя, у нас получилось сжать видео на примерно 30% по сравнению с первоначальным вариантом и сэкономить порядка 10-20% на звуках. Все зависит от конкретного видео и аудио – нужно подбирать настройки экспериментально.

Шрифты

Обычно, шрифты не занимают много места в большинстве приложений. Но это пока вы не столкнетесь с локализациями для языков с иероглифическим письмом. Число иероглифов там может измеряться тысячами. Это увеличивает файлы шрифтов до нескольких мегабайт. Чтобы бороться с этим, мы используем автоматизированный скрипт, который составляет списки символов на основе файла с игровыми текстами – все неиспользуемые символы удаляются изо всех шрифтов.

Текстовые ресурсы и текстовые настроечные файлы

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

Если все возможности исчерпаны

Размер билда – это действительно проблема для нас. Насколько все серьезно, можно понять по некоторым дополнительным способам сжатия, которые мы изобрели.

Итого

Оптимизация размера билда – обширная тема, в этой статье описаны только общие принципы и способы сжатия ресурсов. Кроме этого обычно возникают и другие сложные вопросы:

Post scriptum

Пока статья готовилась к публикации Apple увеличила максимальный объем билда до 150 МБ. Казалось бы, стало лучше. Но в Google Play все еще остается лимит 100 МБ. В результате все получается еще сложнее. Если мы при подготовке билда для iOS будем ориентироваться только на ограничение магазина Apple в 150 МБ, то после этого при подготовке билда для Android точно не сможем уложиться в 100.

Нужно делать разные билды для iOS и Android, чтобы оптимально использовать возможности магазинов приложений. Сейчас мы все еще в процессе поиска лучшего решения. И очень ждем аналогичного шага по увеличению лимита от компании Google. После этого можно будет просто заменить в тексте статьи число 100 на 150, и в ней снова все будет правильно.

Источник

Что такое сжатые приложения

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

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

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

Сжимая видео, вы можете делиться высококачественными видео на платформах социальных сетей, что ранее было невозможно из-за проблем с ограничением размера. Итак, давайте посмотрим на 10 лучших Android-приложений для сжатия видео.

1. Видео Сжатие

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Видео Сжатие — это одно из лучших и простых приложений для сжатия видео, доступных в Play Store. Приложение сжимает видеофайлы и сохраняет их на вашем смартфоне.

Преимущество приложения в том, что оно предлагает несколько режимов сжатия видео и поддерживает почти все основные форматы видеофайлов.

2. Video Dieter 2

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Video Dieter 2 — это приложение для сжатия видео, доступное для устройств Android. Приложение позволяет хранить все видео в файлах меньшего размера.

Помимо сжатия видео, Video Dieter 2 также предлагает вам видеоредактор с основными функциями редактирования видео.

3. Videos & Movies Compressor

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Если вы ищете приложение для Android, чтобы уменьшить размер видео без потери качества, то Video & Movies Compressor может быть лучшим выбором для вас. С помощью этого приложения вы можете сжимать полнометражные фильмы, телешоу и сериалы.

После сжатия видео с помощью этого приложения вы также можете поделиться им напрямую в социальных сетях.

4. Видео компрессор

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Как следует из названия приложения, Видео компрессор — это приложение для Android, которое может сжимать и конвертировать практически любой формат видео. Оно предлагает несколько режимов сжатия видео за счет уменьшения разрешения, битрейта и т. д.

5. Smart Video Compressor and resizer

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Хотя Smart Video Compressor and resizer не очень известное приложение, оно по-прежнему является достойным инструментом для сжатия видео для Android. Инструмент прост в использовании и известен своей функцией сжатия видео без потерь.

Приложение также позволяет вам установить качество видео и скорость процесса сжатия. Кроме того, вы также получаете функцию изменения размера, чтобы установить свои размеры для видео.

6. Сжатие видео и изображений — уменьшение размера

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

Что еще интереснее, инструмент поддерживает пакетное сжатие видео и изображений. Также приложение включает в себя средство изменения размера, оптимизатор и функцию обрезки изображений.

7. Resize Video

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Resize Video — это новый инструмент, по крайней мере, по сравнению со всеми другими, перечисленными в статье. Приложение сжимает видео, с помощью изменения разрешения. В нем также есть полноценный видеоредактор, который можно использовать для обрезки и объединения видео.

Что касается совместимости типов файлов, Resize Video поддерживает почти все основные форматы видеофайлов.

8. Панда Видео: Сжатие видео файлов

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Как мы все знаем, большие видеофайлы — огромная проблема для каждого мобильного телефона. Панда Видео: Сжатие видео файлов решит эту проблему за вас.

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

9. Конвертер видео в MP3, Видеокомпрессор

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

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

10. Редактор видео — Video.Guru

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Если вы ищете приложение для редактирования видео YouTube для Android, Редактор видео — Video.Guru может быть лучшим выбором для вас. Это полноценное приложение для редактирования видео с функцией сжатия.

Приложение поддерживает многослойное редактирование и множество полезных опций для редактирования видео. Вы даже можете добавить видео фильтры и эффекты перехода с помощью этого приложения.

Итак, это лучшие Android-приложения для сжатия видео. Если вы знаете о каких-либо других подобных приложениях, пожалуйста, напишите об этом в комментариях.

Источник

Сжимаем APK, стараясь сохранить его работоспособность

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения
/ PxHere / PD

Оптимизация веса APK — это нетривиальная, но очень актуальная во времена Instant App, задача. Включение proguard избавит вас от ненужного кода, если ваши зависимости можно определить на этапе компиляции, но в APK есть ещё несколько видов файлов, которые можно исключить из сборки.

Под катом о том, как сделать зависимости — определяемыми на этапе компиляции, какие файлы можно исключить из сборки и как это сделать, а так же, разберём, как исключить из сборки неиспользуемые компоненты, если у вас несколько приложений с общей кодовой базой.

Перед прочтением

Лишние файлы

Начнём с простого. Если вы не используете kotlin-reflect, то можете исключить из сборки мета-информацию о kotlin-классах. Сделать это можно следующим образом:
В build.gradle (Module: app)

Зависимости

Этот код убирает зависимость библиотеки ktor-client на kotlin-reflect. Если хотите исключить что-то другое — подставьте свои значения.

Проверьте ваши XML

Проверьте ваш DI

Если вы, как и мы, используете runtime DI, то проверьте, нет ли у вас provider’ов для тех зависимостей, которые вы не используете. Proguard не может исключить их из сборки потому что они не являются неиспользуемыми с точки зрения компилятора. Вы используете их при построении графа зависимостей.

Исключите отладочные зависимости из релизной сборки

Инструменты отладки могут занимать неожиданно много места. Например, stetho весит около 0.2 мб после сжатия! В любом случае, лучше исключить из релизной сборки всю отладочную инфраструктуру, чтобы никто не смог узнать о вашем приложении слишком много, просто скачав его из Google Play.

Платформы

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

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения
/ PxHere / PD

Наш опыт

Мы разрабатываем конструктор мобильных приложений E-SHOP. У нас несколько десятков клиентов и у каждого свой индивидуальный набор компонентов. Некоторые компоненты используются всеми клиентами, некоторые — только частью. Наша задача — включить в сборку клиента только те компоненты, которые ему нужны.

Исключение компонента по флагу

Это — упрощённая версия конфигурации. Настоящая сложна из-за интеграции с нашим CI.

Теперь известно, активен ли компонент, на этапе компиляции, и proguard может исключить его из сборки!

Снова XML

Теперь проблема с неиспользуемыми XML-layouts приобретает новый масштаб! Нельзя просто взять и удалить разметку какого-нибудь компонента просто потому, что некоторым клиентам он не нужен.

Аннотация @Keep

Я не нашёл простого и безопасного способа убрать эту аннотацию. Если вы знаете, как — напишите, пожалуйста, в комментариях.

И вновь DI

Последний, но не по значимости пункт. DI при отключаемых компонентах. Тут всё просто: для каждого компонента мы используем свой контейнер, а общие зависимости подключаем через отдельный модуль.

Выводы

Все оптимизации, представленные в статье — это «низковисящие фрукты». Их довольно легко внедрить и быстро получить результат. До -43% для уже оптимизированного APK в нашем случае. Надеюсь, я сэкономил ваше время тем, что перечислил всё в одном месте.

Источник

Как работает сжатие файлов?

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Сжатие файлов является основной частью работы Интернета. Это позволяет нам передавать файлы, которые в противном случае потребовали бы слишком большой пропускной способности и времени. Всякий раз, когда вы получаете доступ к файлам ZIP или просматриваете изображения в формате JPEG, вы получаете выгоду от сжатия файлов.

Таким образом, в какой-то момент вы, вероятно, задали вопрос: как работает сжатие файлов? Вот основной взгляд на то, как работает сжатие.

Что означает сжатие?

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

Важно отметить, что сжатие не бесконечно. Хотя сжатие файла в ZIP-файл уменьшает его размер, вы не можете продолжать сжимать файл, чтобы еще больше уменьшить его размер до нуля.

Обычно сжатие файлов делится на два основных типа: с потерями и без потерь. Давайте посмотрим, как они оба работают по очереди.

Как работает сжатие файлов: сжатие с потерями

Сжатие с потерями уменьшает размер файла, удаляя ненужные биты информации. Это чаще всего встречается в форматах изображений, видео и аудио, где нет необходимости в идеальном представлении исходного медиа. Многие распространенные форматы для этих типов носителей используют сжатие с потерями; MP3 и JPEG — два популярных примера.

MP3 не содержит всю аудиоинформацию из оригинальной записи — вместо этого он выбрасывает некоторые звуки, которые люди не слышат. В любом случае вы не заметите, что они пропали, поэтому удаление этой информации приведет к меньшему размеру файла, практически без недостатков.

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

Однако чем сильнее вы сжимаете файл, тем заметнее становится снижение качества. Вы, вероятно, испытали это с грязными файлами MP3, загруженными на YouTube. Например, сравните этот высококачественный музыкальный трек:

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

С этой сильно сжатой версией той же песни:

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

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

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

Как мы уже упоминали, сжатие с потерями отлично подходит для большинства видов носителей. В связи с этим жизненно важно, чтобы такие компании, как Spotify и Netflix, постоянно передавали огромные объемы информации. Максимальное уменьшение размера файла при сохранении качества делает их работу более эффективной. Можете ли вы представить, было ли каждое видео YouTube храниться и передаваться в оригинальном несжатом формате?

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

При сохранении в формате с потерями, вы часто можете установить уровень качества. Например, многие графические редакторы имеют ползунок для выбора качества JPEG от 0 до 100.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Экономия на уровне 90 или 80 процентов приводит к небольшому уменьшению размера файла, с небольшой разницей в глазах. Но сохранение в плохом качестве или повторное сохранение одного и того же файла в формате с потерями ухудшит его.

Ниже вы можете увидеть пример этого (нажмите, чтобы увидеть увеличенные изображения). Слева оригинальное изображение, загруженное с Pixabay в формате JPEG. Среднее изображение является результатом сохранения его в формате JPEG с 50-процентным качеством. И самое правое изображение показывает исходное изображение, сохраненное вместо этого в формате JPEG с 10-процентным качеством.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

На первый взгляд среднее изображение выглядит не так уж плохо. Вы можете заметить артефакты по краям коробок только при увеличении. Конечно, самое правое изображение сразу выглядит ужасно.

Перед кадрированием для загрузки размеры файлов составляли 874 КБ, 310 КБ и 100 КБ соответственно.

Как работает сжатие файлов: сжатие без потерь

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

Давайте рассмотрим простой пример, чтобы показать, что это значит. Ниже стопка из 10 кирпичей: два синих, пять желтых и три красных. Этот стек — простой способ проиллюстрировать эти блоки, но есть и другой способ сделать это.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Вместо того, чтобы показывать все 10 блоков, мы можем удалить все цвета, кроме одного. Затем, если мы используем цифры, чтобы показать, сколько кирпичей каждого цвета было, мы представили точно такой же бит информации, используя гораздо меньше кирпичей. Вместо 10 кирпичей нам теперь нужно только три.

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Это простая иллюстрация того, как возможно сжатие без потерь. Он хранит ту же информацию более эффективным способом, удаляя избыточность. Рассмотрим реальный файл, где строка ниже:

Можно «сжать» до следующей, гораздо более короткой формы:

Это позволяет нам использовать семь символов вместо 24 для представления одних и тех же данных, что является значительной экономией.

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

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

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

Когда вы создаете ZIP-файл из исполняемой программы Windows, он использует сжатие без потерь. Сжатие файла ZIP является более эффективным способом хранения программы, но когда вы распаковываете (распаковываете) ее, вся оригинальная информация присутствует. Если вы использовали сжатие с потерями для сжатия исполняемых файлов, распакованная версия будет повреждена и непригодна для использования.

Распространенные форматы без потерь включают PNG для изображений, FLAC для аудио и ZIP. Форматы видео без потерь редки, потому что они занимают огромное количество места.

Когда использовать сжатие с потерями против сжатия без потерь

Что такое сжатые приложения. Смотреть фото Что такое сжатые приложения. Смотреть картинку Что такое сжатые приложения. Картинка про Что такое сжатые приложения. Фото Что такое сжатые приложения

Теперь, когда мы рассмотрели обе формы сжатия файлов, вы можете задаться вопросом, когда следует использовать одну или другую. Как выясняется, «лучшей» формы сжатия не существует — все зависит от того, для чего вы используете файлы.

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

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

Позже, возможно, вы захотите поставить музыку на телефон или старый MP3-плеер, чтобы вы могли слушать на ходу. Возможно, вы не заботитесь о том, чтобы ваша музыка была в идеальном качестве, поэтому вы можете конвертировать файлы FLAC в MP3 Это дает вам аудиофайл, который по-прежнему идеально подходит для прослушивания, но не занимает много места на вашем мобильном устройстве. Качество MP3, преобразованного из FLAC, будет таким же хорошим, как если бы вы создали сжатый MP3 прямо с оригинального CD.

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

Проблемы во время сжатия файлов

Как мы уже видели, преобразование форматов с потерями в формат потерь — это хорошо, равно как и преобразование одного формата без потерь в другой. Однако вы никогда не должны конвертировать формат с потерями в без потерь и должны остерегаться преобразования одного формата с потерями в другой.

Преобразование форматов с потерями в без потерь просто пустая трата пространства. Помните, что форматы с потерями выбрасывают данные; невозможно восстановить эти данные.

Скажем, у вас есть 3MB MP3-файл. Преобразование этого в FLAC может привести к 30-мегабайтному файлу, но эти 30-мегабайтные содержат точные звуки, которые сделал гораздо меньший MP3. Преобразование обратно в формат без потерь не «восстанавливает» информацию, которую выбросило сжатие MP3.

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

Как работает компрессия? Теперь ты знаешь

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *