Оптимизация картинок и фотографий.

С нашего форума forum.nerusoft.com:

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

>>>Можно уменьшить и до 2 цветов, если нужно laugh.gif

А вообще, если серьёзно, оптимизация - дело тонкое.
Главное в этом деле 2 пункта:
- Уменьшить занимаемое место картинкой.
- Не перестараться с уменьшением. Ато можно так до уменьшаться, что картинка ни к чему будет не пригодна rolleyes.gif

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

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


1 способ. Уменьшение размера фотографии.
2 способ. Уменьшение количества цветов.
3 способ. Изменение формата файла, степени и алгоритма сжатия.

Далее, по отдельности рассмотрю каждый способ.

>>>1 способ - уменьшение размера фотографии.

Данную вещь позволяют реализовать все графические редакторы.
От размера фотографии сильно зависит размер. Причём, чем больше Вы будете увеличивать, скажем высоту, тем быстрей будет расти размер файла (если у вас широкая панорамная фотография). Выбирать высоту фотографии нужно без фанатизма. Нужно не забывать, что пользователь открывает панораму через интернет и у него могут быть достаточно узкие каналы. При этом, пользователю не нужно супер-качество, а нужно просто получить общее представление о местности. Конечно, это не значит, что нужно свести размер фотографии к 0, тогда он точно ничего не увидит smile.gif. Тут важно выбрать оптимальный размер фотографии.

Итак, откроем наш PhotoPaint (у меня версия 11 англоязычная). И загрузим в него фотографию.

Теперь, войдем в меню Image->Resample

Теперь, нужно указать процент, который хотите оставить. Программа пропорционально изменит размер фотографии.
Помните, что тут важно не перестараться smile.gif В зависимости от размеров можно укзать 75-50%.
Нажмите Ok и посмотрите результат.
Если после этого можно еще уменьшить и это не ухудшит наше решение, тогда - уменьшите.
Если же перестарались, тогда можно вернуться - Ctrl+Z.

2 способ - уменьшение количества цветов.

Кроме уменьшения размера файлов, можно уменьшить количество цветов. Казалось бы, насколько это уменьшит размер ?? Оказывается, довольно много.
Следует учитывать, что человеческий глаз способен различить 256 цветов. Большинство же фотоаппаратов способны сфотографировать с 48 и 24 битным качеством. Т.е. в размере получается: 256 цветов - это 1 байт (8 битов), 24 бита - это 3 байта, 48 бит - это 6 байт.
Получается, если Вы уменьшите количество цветов с 48 до 24 бит, тогда размер информации о цвете уменьшится в 2 раза.
А если с 48 бит до 256 цветов - в 6 раз.
Если у вас обычный точечный формат, тогда на каждый пиксель (каждую точку) изображения приходится 1 единица атрибута цвета. Т.е. 1, 3 или 6 байт.

Если у Вас изображение 480х480, тогда, получается 230400 точек. Т.е. атрибутом цвета в 48 битах будет заниматься 1382400 Байт.
Если уменьшить до 1 байта, получим - 230400
Есть разница 1,3 Мб и 0,23 Мб ? Конечно есть. И значительная!

От вопроса теоретического, перейдем к практическому.
Для того, чтоб уменьшить количество цветов выполните команду Image->ColorMode увидите список различных режимов и попробуйте выбрать 8 битный цвет. Программа выведет окно с выбором алгоритма. Теперь очень важно правильно выбрать алгоритм, так, чтоб фотография не покрылась рябью smile.gif
Наиболее оптимальные, по моемому алгоритмы: Optimized и Adaptive. Поварьируйте с параметрам, смотрите, чтоб качество не уменьшилось.
И нажмите Ok. Если не устраивает - вернитесь Ctrl+Z. И попробуйте другие параметры или другое количество цветов. Ведь даже переход с 48 бит на 24 бита уменьшит занимаемый объем на цвет в 2 раза.

3-й способ - выбор формата данных, алгоритма сжатия и искажения.

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

Самый примитивный формат - BMP. Он хранит картинку, как есть. Без искажений, но и при этом не разумно много занимая места.
Если Вы хотите заполнить весь винчестер несколькими фотографиями, тогда этот формат для вас smile.gif

Часто используется в полиграфии TIFF - это формат тоже, как BMP без потери качества, но он архивирует картинку определёнными алгоритмами. Картинка получается довольно большая, но гораздо меньше BMP-формата.

В интернете, да и не только, большую популярность получил формат GIF. Это формат с потерей качества. Потеря происходит в основном - цветов, т.к. он умеет работать только с 256 цветами. Фотографии в таком формате получаются не большими. Особенно не большими получаются не много-цветные изображения. Чем меньше цветов будет, тем меньше будет файл. Принцип работы данного формата - объединяются пиксели в ряде с одинаковыми атрибутами в одну информационную единицу. Таким образом, чем меньше изменений цветов у вас в изображении, тем меньше будет файл. Этот формат хорош тем, что позволяет делать анимационные изображения. А плох тем, что лицензионно защищен. Фактически, вы не имеете права его использовать без лицензии. Хотя, весь мир всё таки использует... smile.gif

Т.к. GIF вы не имеете право использовать, появилась новая современная интерпретация - PNG.
Данный формат обладает большими возможностями, чем GIF и при этом, позволяет сделать всё, что позволяет GIF.

Как бы то ни было, но рекордсменом по сжатию фотографий является не GIF и не PNG, а JPG.

У JPG принцип работы отличается от всех предыдущих форматов. Прежде всего, данный формат умеет работать с фотографиями не от 256 цветов.
С 2-х цветными, похоже, не умеет. Но, возможно, ошибаюсь smile.gif
Уменьшение размера происходит за счёт объединения квадратной области в квадрат большего размера (Smoothing) и кроме того, за счёт архивирования (Compression). Естественно, чем больше значения данных составляющих, тем меньшего качества будет фотография. Если выберете слишком большое значение - нельзя будет ничего различить на фотографии smile.gif

Сохранить в данный формат в PhotoPaint можно двумя способами: File -> Save As и File Export For Web
Оба способа хороши.
Кстати, заметил ещё 1 способ File Image Optimized, который как раз позволяет оптимизировать заодно фотографию smile.gif
Как работать с этими способами - разберетесь.
Тут же я рассмотрю способ через Save As.

В этом режиме запрашивается ряд параметров. Если переборщите с ними - получите размытую фотографию.

Итак, Encoding Method
Progressive, Optimiz - я обычно отмечаю галочки.
Sub Format: Standart и Optional. Конечно, Optional - вещь хорошая, только не все программы с таким форматом умеют работать. Во всяком случае, скрипт для панорам работать не захотел. Поэтому, выбирай Standart.

Теперь параметры Compression, Smoothing... Чем больше в них значения, тем меньше файл. Только пользуйтесь без фанатизма.
10-30% - пользователь практически не заметит изменений.
Но, вот больше - начитает изображение постепенно расплываться...
Я пробывал для панорамы по 43%, результат можно увидеть тут: http://3r.kiev.ua/downloads/panorams/bot_sad/

В нём я даже не изменял размер и количество цветов (насколько помню smile.gif)
Из 6 Мб получил 400 Кб.
Видно некоторая потеря качества на горизонте, но в целом - нормально smile.gif.

Комментарии

Популярные сообщения