Как я могу сжать изображения?

25

У меня есть 5000 изображений, которые мне нужно сжать (для отображения на моем сайте).

Я новичок в Ubuntu. Так что мне делать?

user2950593
источник
2
Возможный дубликат пакетного сжатия и переименования JPG (найти -exec, xargs, piping?)
Мостафа Ахангарха
@MostafaAhangarha: не дублируется. Пожалуйста, прочитайте мой ответ askubuntu.com/a/781588/9598 и пересмотрите свой голос, чтобы не закрывать этот вопрос. Это хорошо. Спасибо!
Geppettvs D'Constanzo

Ответы:

21

Я использую Trimage очень прост в использовании.

только добавьте картинку и сожмите для установки:

sudo apt-get install trimage

введите описание изображения здесь

Мохамед Слама
источник
2
Я не вижу каких-либо настроек, с помощью которых я могу определить степень сжатия, размер файла и т. Д.
Rico,
46

Слово «сжатие», по-видимому, неправильно истолковано в этом вопросе, но оно все же верно в зависимости от контекста, который вы хотите увидеть.

Декорации

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

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

Так. Давайте разберемся, какой ответ нужно решить:

  1. Картинка ДОЛЖНА быть легкой
  2. Изображение ДОЛЖНО быть «сжато», чтобы потерять размер файла, но не «изменено в размере», как указано другим пользователем, указавшим на дублированный по этому вопросу пакетное сжатие и переименование JPG (find -exec, xargs, piping?)
  3. Изображения должны быть пакетно сжаты, предпочтительно через графический интерфейс.

Облегченная картина

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

Изображения высокого разрешения с разрешением более 1024 пикселей могут иметь большой размер файла. Я приведу пример на этом скриншоте:

введите описание изображения здесь

введите описание изображения здесь

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

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

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

Файл должен быть сжат.

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

Итак, давайте бросим следующее в терминале:

convert seminario-tabloide.png test.jpg

Это собирается преобразовать формат PNG высокой четкости в «сжатый» формат JPG, который сам по себе является меньшим файлом! Это идет от 9,5 МБ до 2,4 МБ.

введите описание изображения здесь

Еще Большой?

Но 2,4 МБ - это все же большой размер файла. Теперь давайте поиграем с некоторыми другими командами преобразования ImageMagick , чтобы создать файлы меньшего размера:

convert test.jpg -quality 50% test-50p.jpg

Это то, что нам нужно сделать, чтобы «сжать» изображение. Это приведет к снижению качества изображения на 50% и предоставлению файла размером 938,4 КБ <=== (примечание: килобайты, даже не мегабайты).

Мы можем пойти дальше и создать файл меньшего размера, изменив процент в той же команде с помощью:

convert test.jpg -quality 30% test-30p.jpg

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

Изменение размера + сжатие = супер круто!

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

Итак, давайте сделаем это:

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

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

Теперь ... угадайте что?

Размер файла уменьшен с 9,5 МБ до ... (ждите музыку с конгами, пожалуйста) 433,7 КИЛОБАЙТОВ

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

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

И мы поднялись с 433,7 КБ до 176,2 КБ за одну команду. Этот пример был успешным, тем не менее, не ожидайте, что какие-либо упражнения приведут к меньшему размеру файла. Но вы можете получить массу удовольствия, выполняя подобные упражнения.

Пакетный процесс

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

Для такой вещи мы можем сделать это с двумя процессами.

Терминал

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

Конвертировать все в 1024px (вы можете использовать любое количество пикселей)

for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;

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

Уменьшите качество в процентах (используйте любой процент, какой пожелаете) для всех изображений в каталоге:

for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;

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

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

Наутилус Скрипт

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

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

Для получения инструкций о том, как это сделать, прочитайте вопрос, ответ и комментарии здесь: Как выполнить пакетную обработку изображений JPG, чтобы изменить их качество с помощью Nautilus-Actions?

Удачи!

Geppettvs D'Constanzo
источник
1
Это ответ "научи меня ловить рыбу". convertНавыки командной строки ImageMagick - это здорово.
Чарни Кей
Solid! Я использовал текстовый редактор Sublime Text в режиме с несколькими курсорами, чтобы быстро изменить несколько команд одновременно для «пакетного» сжатия нескольких фотографий. Я просто использовал convert photo.jpg -quality 70% photo_compressed.jpgформат команды, и она отлично работала! Даже установив сжатие только на 70% от исходного качества, размер фотографии уменьшился до ~ 37% от исходного, так как эффект усиливается за счет осей x и y.
Габриэль Стейплс
Фантастическое объяснение столь часто неправильно понимаемых концепций. Для полноты позвольте мне добавить, что для пакетной обработки вы также можете использовать mogrify ImageMagick, а не конвертировать, в котором я создаю папку для хранения результатов, а затем просто перерабатываю в эту папку, которая также поддерживает порядок. Напримерmogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Денис
0

Если вы имеете в виду изображения JPEG, сжатие де-факто невозможно. Поскольку jpeg по определению является сжатым форматом файла (все шумы и ненужные пиксели уже удалены). Вы можете застегнуть их, но общий размер останется примерно таким же. Единственный продвинутый алгоритм сжатия, который я знаю для jpegs - это zipx. Но zipx является собственностью Winzip и обеспечивает максимальную размер уменьшен на 30% (в режиме архива zipx).

Чтобы отобразить ваши изображения в Интернете, сначала вы должны изменить их размер (менее 1 МБ на каждый) и при желании преобразовать их в формат файла png. PNG (= портативная сетевая графика) специально оптимизирована для более быстрой передачи в Интернете и более быстрого отображения. Опытные пользователи могут даже конвертировать эти изображения в формат webp (формат Google для изображений, самый быстрый алгоритм загрузки).

Вы можете пакетно конвертировать изображения с помощью XnConvert, а затем изменять размер ваших изображений с помощью XnView. Загрузите пакет deb здесь: http://www.xnview.com/de/xnviewmp/#downloads , затем щелкните его правой кнопкой мыши и откройте его с помощью Gnome Software.

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

ipse lute
источник
3
Вы можете упомянуть различные варианты сжатия / качества JPEG; вполне возможно уменьшить размер файла в формате JPEG путем увеличения его сжатия (и, следовательно, снижения его качества).
Ник Вайнберг
1
Мое понимание сжатия означает устранение ненужных пикселей при сохранении того же качества. Снижение качества - это не сжатие, а уменьшение или уменьшение частоты дискретизации. Сжатие без потерь возможно при использовании формата zipx, который отлично работает с серийными фотографиями. Он создает какую-то переоцененную / перегруженную кучу похожих фотографий, на которых все двойные пикселы сглаживаются на отдельном слое, что-то похожее на файл .css на веб-странице. Повторяющиеся пиксели определяются как отдельный объект в архиве.
ipse lute