Как к пакетной обработке JPG отображает для изменения его качества с Действиями Наутилуса?

В первую очередь: Спасибо за то, что заняли время, чтобы считать это и обеспечить некоторую справку. Любые советы ценятся.

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

Скажем: у Меня есть это изображение со свойствами изображения что касается (2 261 588-байтового) размера файла на 2,3 МБ и:

enter image description here

И, после открытия файла в GIMP 2.8, чтобы просто экспортировать копию и использовать диалоговое окно JPG Export для сокращения качества изображения к 30% как показано в следующем снимке экрана:

enter image description here

Я получаю свойства следующего изображения в копии изображения ((251 797-байтовый) размер файла на 251,8 КБ):

enter image description here

Теперь.

Я использую Действия Наутилуса, чтобы к пакетной обработке много изображений для репродуцирования того же поведения через контекстное меню путем выбора набора файлов в Наутилусе, щелкните правой кнопкой по любому из этих выбранных файлов и выберите надлежащее действие Действий Наутилуса. Результатом является файл, содержащий изображение в тех же размерах как оригинал с меньшим качеством, конечно, и размер файла немного больше ((275 265-байтовый) размер файла на 275,3 КБ), но это не основная проблема для меня.

Проблема

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

enter image description here

В основном каждое Действие Наутилуса использует следующие параметры:

Команда: convert

  • От (imagemagick)

Параметры: %F.jpg -quality 80%% %F-80q.jpg

  • Который интерпретируется как: convert path/to/file1.mid.jpg -quality=80% path/to/file1.mid-80q.jpg

Рабочий каталог: %d

  • Объясненный себя.

Так, результаты видны в этом снимке экрана:

enter image description here

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

File1.jpg === File1-80q.jpg
File2.jpg === File2-80q.jpg
File3.jpg === File3-80q.jpg
File4.jpg === File4-80q.jpg

И так далее...

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

Это - там лучший способ сделать это? или... Я могу улучшить в некотором роде, что я уже делаю?

Большое спасибо за Вашу поддержку.

P.S. Я видел, Как может я пакетные изображения преобразования к черно-белому при сохранении структуры папок и существует ли способ обработать SVGs экспорта в пакетном режиме к PNGs? но я не пытаюсь выполнить это от терминала, но из контекстного меню. Если я опускаю что-то в этом осуществлении, сообщенном мне! Я буду ценить его много.Спасибо!

Править

После использования ответа muru я нахожу, что решение частично делает то, что я ожидаю.

Более конкретно это решает проблему имен файлов. Тем не менее, я также ожидал получать меньшие размеры файла путем выполнения надлежащего convert file.jpg -quality 30% команда и это отбрасывают большие размеры файла, как Вы видите в следующем изображении:

enter image description here

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

Обновление

Я пишу это только для уведомления людей, которых я видел, где это была проблема со сжатием. Файл, который я пытался сжать, уже был достаточно сжат так (как упомянуто в ответе muru):

Процесс просто добавлял наверху, ничего не получая.

6
задан 13 April 2017 в 15:24

1 ответ

Вы не можете использовать %F дважды в команде как этот, потому что %F заменяется названиями каждого выбранного файла. Например, команда sh с параметрами -c 'printf "%%s\n" "$@" > foo' %F %F создаст названный файл foo с названиями каждого выбранного файла, дважды. Поэтому convert управляйте, чтобы на самом деле работал:

convert file1.jpg file2.jpg ... -quality 80% file1.jpg file2.jpg ... fileN.jpg-80q.jpg

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

То, что можно сделать, является переносом команда в bash -c и выполненный для цикла:

bash -c 'for i; do convert "$i" -quality 80% "${i/%.jpg/-80q.jpg}"; done'

(где я предполагаю, что все файлы заканчиваются .jpg)

В действии Вы будете иметь bash как команда, и для параметров:

-c 'for i; do convert "$i" -quality 80%% "${i/%%.jpg/-80q.jpg}"; done' - %F

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

2
ответ дан 14 April 2017 в 01:24

Другие вопросы по тегам:

Похожие вопросы: