Размер файла с изображением занимает 20 мбайт после чего к файлу применяют сжатие с потерями

Обновлено: 04.07.2024

  • Кликнете на любую картинку в презентации, чтобы ее выбрать
  • Выберите «Формат рисунка» в верхнем меню
  • Нажмите на кнопку «Сжать рисунки»
  • Выберите нужное качество изображения из выпадающего списка
  • Проверьте, что выбран пункт «Удалить обрезанные области рисунков»
  • Выберите «Применить ко всем рисункам» и нажмите «Ок»
Выделите нужные изображения и нажмите «Сжатие рисунков»

Это все. Теперь можете сохранить файл и проверить, насколько он уменьшился. Иногда презентация в 80 мегабайт может быть сжата до 7! А теперь давайте разберемся в вопросе подробнее.

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

Рисунки и фотографии должны иметь разрешение не более 1920×1080 и размер не более 400−500 килобайт. 1920×1080 пикселей — это стандартное разрешение для большинства мониторов и проекторов.

Если изображение не будет занимать всего слайда, оно может быть еще меньше. Например, если вам нужно разместить фотографию примерно на четверть слайда, то разрешение этого фото должно быть примерно 800×600 пикселей.

Изображение не должно быть больше 800×600, если оно не занимает весь слайд

Мы рекомендуем, по возможности, использовать формат изображений JPEG. Этот формат обеспечивает оптимальное сжатие для фотографий и большинства рисунков. Изображения, имеющие прозрачный фон, чаще всего сохраняются в формате PNG. Однако, если этот прозрачный фон вам не требуется, и при этом данное изображение слишком «тяжелое», тогда кликнете на нем правой кнопкой мыши и выберите пункт меню «Сохранить как рисунок». Выберите тип файла JPEG и вставьте изображение на слайд повторно.

Уменьшение размера файла PowerPoint с помощью сжатия изображений

Мы уже кратко описали эту операцию в начале статьи, теперь разберем подробнее. Для сжатия выбранных или всех изображений в презентации выберите изображение и на вкладке «Формат рисунка» кликните на кнопку «Сжать рисунки».

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

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

Также, обратите внимание, что если вы обрезали фотографии внутри PowerPoint и не хотите, чтобы в файле презентации сохранялись обрезанные участки изображений, то нужно поставить галочку «Удалить обрезанные области рисунков».

Этот метод тоже очень простой. Если у вас в презентации встроено видео, в PowerPoint, начиная с версии 2018, встроена функция, позволяющая сжать его. Учтите, что если в вашем видео файле встроен дополнительные аудио-дорожки или субтитры, то они будут удалены после сжатия.

На вкладке «Файл», кликните пункт «Сведения», а далее в разделе «Размер файлов мультимедиа и производительность» кликните кнопку «Сжать медиа».

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

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

Прежде всего скажем, что речь здесь пойдет о файловых системах FAT и NTFS, как наиболее распространенных, и ничего не будет сказано о файловых системах, используемых в не-Windows системах, поскольку такие системы лежат вне сферы интересов автора. А теперь – к делу.

Казалось бы, какая неоднозначность может быть, если говорить о размере файла. Сколько в него данных записали, такой и размер (или длина). Сколько в нем есть байтов от начала до конца (и это число записано в файловой системе в качестве размера файла), такой и размер, не так ли? Как говорил Шельменко-денщик, так то оно так, да только трошечки не так.


Проведите эксперимент. Возьмите любой исполняемый файл и выполните его копирование командой
copy что-то.exe что-то-другое.exe
Если вы раньше с этим сталкивались, то уже знаете, что результирующий файл получится намного короче исходного и не будет копией. Причина простая: программа copy, запущенная без параметра /b, копирует файл до тех пор, пока не встретит байт с кодом 27h, этот символ называется «конец файла».

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


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

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


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

Максимальный размер такого файла зависит от размера записи и составляет примерно 600 байтов для записи мелкого размера (1 Кб) и 3600 – для записи крупного размера (4 Кб). Следует, впрочем, отметить, что до недавнего времени Windows показывала размер такого файла на диске равным одному кластеру, хотя фактически ни одного кластера файлу не выделено.

Если файл сжат, то его размер на диске может быть заметно меньше собственно длины файла (количества данных в нем).

Дополнительно усложняют картину так называемые разреженные файлы. В них полезные данные содержаться только в определенных участках файла, а остальная часть файла не используется вовсе. Возьмем в качестве примера файл журнала изменений \$Extend\$UsnJrnl, имеющийся почти на каждом компьютере (не пытайтесь увидеть его в проводнике или других диспетчерах файлов, не получится).

Он может иметь длину несколько гигабайт, но значимых данных содержит при этом обычно только 32 мегабайта в самом конце. А остальная часть вообще никаких данных не содержит, места на диске не занимает, и при попытке прочитать данные из этой части система выдаст набор нулей, даже не обращаясь к диску.
Если у читателя возникнет желание поэкспериментировать с разреженными файлами, такой файл можно создать с помощью команды fsutil sparse. А на досуге можно обдумать, какова же настоящая длина файла, если система записала в соответствующую графу число 4 Гб, а реальных данных в файле только 32 Мб и на диске он занимает тоже 32 Мб.

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

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

Попробуем пояснить, о чем идет речь, на примере. Возьмите флешку (флешка используется для наглядности, поскольку она медленнее жесткого диска работает с большими объемами данных) размером от гигабайта, отформатированную в FAT32, и создайте на ней большой файл командой
fsutil file createnew k:\пробный.txt 900000000

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


Рассмотрим это на примере. Создайте новый файл на одном из рабочих дисков, отформатированном в NTFS. Сотни мегабайт совершенно не обязательны, десятка-другого килобайт будет вполне достаточно:
fsutil file createnew C:\пробный.txt 10000

Теперь откройте его с помощью любого просмотрщика файлов, например FAR.

Как видим, в файле действительно нули. Но если посмотреть на этот файл с помощью какого-либо редактора дисков, обращающегося к секторам напрямую, например dmde, то картина будет другая.

Если мы откроем том С как логическое устройство и посмотрим на содержимое файла, то увидим те же самые нули.

Но если открыть диск как физическое устройство, то в том же самом секторе (обратите внимание на номера LBA – разница в 63 возникла из-за того, что начало раздела сдвинуто относительно начала диска) увидим данные, которые ранее были записаны в какой-то позже удаленный файл.

И если мы увеличим длину действительных данных, то увидим эти данные в файле. Установим эту длину равной 300 байт:

fsutil file setvaliddata C:\пробный.txt 300

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


Теперь снова посмотри на содержимое файла. Заметьте, что никаких данных мы в него не записывали!

Чисто случайно получилось, что в этом файле довольно много осмысленного текста, что делает картину более наглядной. 300 десятичных байтов – это 12c шестнадцатиричных, и как раз на этом байте обрывается текст и начинаются нули. Если сдвинуть границу действительных данных еще дальше, то «проявятся» и следующие строки.

Подведем итоги


Имеется две физических длины файла – это размер файла, записанный в файловой системе и место, занимаемое на диске. Также имеется две логических длины файла – это признак конца файла (байт EOF – 27h) и длина действительных данных. Как составную часть логической длины можно рассматривать и пустые области в разреженных файлах – вспомните \$Extend\$UsnJrnl, где большой массив отсутствующих данных завершается тридцатью двумя мегабайтами действительных.

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

Растровые изображения очень прожорливы и поглощают большие объемы дискового пространства. В наше время, когда диск 10 Гб и пара хороших ботинок стоят одинаково, экономия пространства на диске уже не является сколь-нибудь серьезной проблемой – в отличие сетевой передачи этих данных. Будь то соединение по телефонной линии с Web или линия T1 в вашем офисе, перемещение больших файлов – нелегкое дело.

Поэтому наша задача – максимальное использование наличных ресурсов и уменьшение перемещаемых файлов до разумных размеров.

Решить ее можно тремя способами: работать с меньшими изображениями (нет, серьезно!), архивировать неиспользуемые файлы и работать с форматами, допускающими уплотнение данных.

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

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

Для примера возьмем 1-битовое (черно-белое) изображение высотой и шириной по 100 пикселов. Без режима сжатия программа сохраняет значение (ноль или единицу) каждого из 10000 пикселов изображения. Это все равно, что класть носки в комод, отмечая про себя: "Ага, здесь у меня один синий носок и один синий, один черный и один черный". Такое описание можно ужать наполовину: "Здесь пара синих носков и пара черных".

Метод RLE. Подобным же образом можно сгруппировать нули и единицы, сосчитав их количество в одном ряду (см. рис. 16.22). Представить это можно так: "В строке 34 нуля, затем 3 единицы, затем 55 нулей" и т. д. Этот метод называется Run Length Encoding (RLE), он автоматически используется на Маке при сохранении PICT -изображений (применяется он также и на факс-машинах). При сжатии и разжатии файла потерь данных здесь не происходит – на выходе мы получаем то же самое, что было на входе.


RLE – метод сжатия без потерь (Строка 23: 2 нуля, 5 единиц, 25 нулей, 43 единицы и т. д.)


увеличить изображение
Рис. 16.22. RLE – метод сжатия без потерь (Строка 23: 2 нуля, 5 единиц, 25 нулей, 43 единицы и т. д.)

Метод LZW и код Хаффмана. Существуют и другие формы сжатия без потерь. Простые картинки с большими областями сплошных цветов RLE уплотняет до полного минимума, но более сложные изображения (например, в градациях серого) сжимаются не очень сильно. Механизм LZW (Lempel-Ziv-Welch) и код Хаффмана сводят до минимума общие строки данных.

Иначе говоря, они отслеживают не строки одинаковых цветов, а тенденцию. Натыкаясь на значение "010101", RLE не может выполнить сжатие. А код Хаффмана и LZW – достаточно разумные алгоритмы, чтобы вычислить тенденцию изменения символов и уплотнить информацию.

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

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

Растровые изображения также можно представлять в виде заголовков (уплотнять), пересылать и распаковывать. И точно так же, глядя на распакованную версию, вы не увидите всех тех деталей, что были в оригинальном изображении. Так, если в квадрате 3х3 все девять пикселов примерно одинаковы, их можно заменить одним усредненным значением. Получится сжатие девять-к-одному. При этом данные оригинального изображения – оттенки в тех девяти пикселах – будут утеряны.

Такой вид уплотнения называется сжатием с потерями. Отбрасывая часть информации, можно существенно повысить уровень компрессии. Если TIFF-файл, сжатый по методу LZW , может уменьшиться до 40 процентов от исходного размера, то файл, сжатый методом с потерями, может сократиться до двух и менее процентов от исходного размера.

Уровни JPEG-сжатия. Обычно схемы сжатия с потерями дают вам возможность самим выбрать уровень уплотнения данных. (Основной метод – единственный, который предлагает Photoshop – это JPEG, или Photographic Experts Group). При малом сжатии файлы получаются большими и с лучшим качеством изображения. Большее сжатие дает меньшие файлы и более низкое качество. Насколько вы теряете в качестве? Это зависит от уровня сжатия, разрешения изображения и его содержимого.

В разных программах метод JPEG реализован по-разному и с разными результатами. Следует заметить, что JPEG – это и метод сжатия и самостоятельный формат файла (см. "Форматы файла" ранее в этой лекции), но то и другое основано на одинаковых алгоритмах.

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

Сжимать методом JPEG следует только окончательный вариант изображения, по завершении редактирования и коррекции. Тоновая или цветовая коррекция сжатых изображений подчеркивает артефакты компрессии. Повышение резкости сжатых изображений производит эффект достойный набора фильтров Kai’s Power Tools, но вряд ли может найти применение в допечатной подготовке.

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

Подсказка. Отличное превью, небольшой файл. Некоторые пользователи все еще используют Photoshop в основном для создания промежуточных изображений, занимающих определенное место, чтобы позже заменить их подходящим изображением, имеющим высокое разрешение. В этом случае вас больше заботит вид изображения на экране (и, возможно, при печати на дешевом настольном струйном принтере), чем в цветоделениях. Попробуйте сохранить такое изображение как EPS-файл одновременно с JPEG-превью и JPEG-кодированием. JPEG-превью с 24-битовым цветом превосходно выглядит на экране, JPEG-кодирование (вы можете даже выбрать из списка Quality вариант Low, поскольку эти данные не будут использоваться, если вы не собираетесь печатать на PostScript-принтере) делает файл действительно небольшим.

Этот файл несколько больше, чем простой JPEG-файл, но изображение выглядит на экране намного лучше, особенно если вы используете QuarkXPress или PageMaker.

Две других формы сжатия с потерями – фрактальное сжатие и "wavelet"-сжатие – многообещающие технологии сжатия для будущего, но Photoshop поддерживает их только через дополнительные модули сторонних фирм. Тем не менее, о них стоит рассказать.

  • Для получения хороших результатов нужно начинать с достаточно большого файла (не менее 20 Мб).
  • Получаются умеренные коэффициенты сжатия. При сжатии без потерь коэффициент сжатия составляет примерно 2:1, а при сжатии "почти без потерь" – 5:1.
  • Сжатие обычно занимает много времени.

Брюс использовал Genuine Fractals для апсэмлинга сканированных изображений размером 75 Мб до 300 Мб, который требуется для печати изображений 75 на 100 см с разрешением 300 ppi, и он убедился, что результат выглядит намного естественнее, чем при использовании встроенной в Photoshop бикубической интерполяции. И хотя этот метод может быть чрезвычайно полезен для апсэмплинга такого рода, ограничения пакета Genuine Fractals делают его менее привлекательным, чем обычные утилиты сжатия.

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

Часто сжатия без потерь недостаточно. Сегодня поговорим о сжатии с потерями.

Чем отличается от сжатия без потерь

При таком сжатии мы теряем часть информации. Но смысл алгоритмов сжатия в том, чтобы мы этого не замечали: сжатие должно происходить так, чтобы всё важное передалось, а неважное — нет.

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

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

Есть алгоритм сжатия для фотографий, который используют для изображений типа JPEG. В этом алгоритме изображение разделяется на один слой яркости и два слоя цвета (если упрощённо, то картинка разделяется, на чёрно-белый слой и на слой с красками).

Из Википедии: Цветное изображение и его компоненты Y, CB и CR Из Википедии: Цветное изображение и его компоненты Y, CB и CR

Эти слои нарезаются на квадраты 8 × 8 пикселей и кодируются с помощью особой математики. Её смысл в том, чтобы понять: есть ли в этом квадрате 8 × 8 что-то важное. Если оно есть, то оно кодируется и данные сохраняются. Если квадрат более-менее однородный, то он записывается как однородный, данных мало.

Экономия данных происходит как раз за счёт этой математики: например, если в квадрат 8 × 8 попал кусочек ясного неба, то там достаточно сказать «весь кусок такого-то синего цвета», и тогда нужно хранить немножко данных. А если на квадрат пришёлся какой-то угол или деталь, то данных нужно сохранить больше.

А если у вас картинка нарезана отдельно на яркость и отдельно на цвет, вы экономите ещё больше данных: в слое с яркостью у вас будут все контрастные детали, а в цветовых слоях — плавные цветовые переливы. Плавные переливы легче закодировать, это будет незаметно для глаза.

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

Возьмём странное изображение винограда на ржавой трубе. Найдите различия между двумя картинками:

Слева — оригинал, справа изображение сжато в 20 раз. Визуально разницу заметить трудно. Слева — оригинал, справа изображение сжато в 20 раз. Визуально разницу заметить трудно.

Теперь сожмём оригинал в 415 раз: было 10 мегабайт, стало 24 килобайта. При этом мы всё равно понимаем, что на фотографии — виноград с плодами на ржавой трубе. Наш мозг сглаживает эти неровности и узнаёт картинку.

Справа уже видны пиксели и размытость — это побочные явления сильного сжатия. Справа уже видны пиксели и размытость — это побочные явления сильного сжатия.

Хуже всего JPEG подходит для сжатия изображений, в которых есть мелкие детали, острые края и резкие контрасты. Особенно — если изображения мелкие. Тогда алгоритмы JPEG создают слишком много артефактов. Дизайнеры говорят, что картинку зашакалило (от слова «шакал»):

Сжатие звука

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

Например, человеческое ухо в среднем воспринимает звуки частотой от 20 герц до 20 килогерц. 20 Гц — это супергрудной бас, а 20 КГц — это супертонкий писк. Чтобы закодировать волну с максимальной частотой 20 КГц, на каждую секунду вам нужно 40 тысяч чисел размером 2 байта. Получается, что секунда несжатого звука будет занимать 80 килобайт.

Но содержательная часть человеческого голоса (та, в которой зашита вся информация) заканчивается на 4000 герцах. Если отрезать у голоса всё, что выше 4000 герц, вы запросто различите смысл слов и поймёте интонацию. Пропадёт лишь некоторая «воздушность» звука. Если нет цели сделать суперкрутой звук, то алгоритмам нет смысла кодировать диапазон 4—20 КГц.

Тогда из звука отсекается лишняя информация и кодируется только диапазон до 4 КГц. Для этого кодирования достаточно 16 килобайт в секунду. Это уже экономия в 5 раз!

Самая важная часть голоса вообще болтается в районе 1000—2000 герц. Если отрезать у голоса всё от 2 до 20 КГц, то нам хватит 8 КБ в секунду, а это экономия в 10 раз по сравнению с несжатым файлом.

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

Сжатие видео

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

  1. В одной секунде видео 25 кадров
  2. Если за секунду в кадре ничего особо не произошло, то это будут 25 примерно одинаковых картинок
  3. Алгоритму нет смысла кодировать каждую картинку с нуля. Он возьмёт одну картинку как отправную точку, во всех следующих закодирует только изменения по сравнению с предыдущим кадром
  4. В зависимости от того, насколько мы хотим качественную картинку на выходе, мы можем задавать степень чувствительности алгоритма: от «кодируй, только если в кадр залетит ракета» до «реагируй на мельчайшие изменения в кадре». Чем более чуткий кодировщик, тем больше весит файл.

Пример кодирования одной и той же сцены с разной чувствительностью — на видео она отображена в килобитах в секунду. Чувствительность влияет на итоговый размер видеофайла:

Стримы и потоковое видео

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

Размеры кадров в таких видео часто измеряются в «строках» — это те самые числа возле буквы p:

  • 144p — кадр состоит из 144 строк, то есть его высота — 144 пикселя
  • 480p — кадр высотой 480 пикселей
  • 1080p — кадр высотой 1080 пикселей

Соответственно, чем выше кадр, тем он шире; тем больше размер изображения; тем больше деталей в него влезает.

Читайте также: