В первую очередь: Спасибо за то, что заняли время, чтобы считать это и обеспечить некоторую справку. Любые советы ценятся.
Я использую Действия Наутилуса для добавления действия пользовательского контекстного меню для создания копии JPG, отображают и уменьшают его качество (и размер файла) при сохранении размеров изображения.
Скажем: у Меня есть это изображение со свойствами изображения что касается (2 261 588-байтового) размера файла на 2,3 МБ и:
И, после открытия файла в GIMP 2.8, чтобы просто экспортировать копию и использовать диалоговое окно JPG Export для сокращения качества изображения к 30% как показано в следующем снимке экрана:
Я получаю свойства следующего изображения в копии изображения ((251 797-байтовый) размер файла на 251,8 КБ):
Я использую Действия Наутилуса, чтобы к пакетной обработке много изображений для репродуцирования того же поведения через контекстное меню путем выбора набора файлов в Наутилусе, щелкните правой кнопкой по любому из этих выбранных файлов и выберите надлежащее действие Действий Наутилуса. Результатом является файл, содержащий изображение в тех же размерах как оригинал с меньшим качеством, конечно, и размер файла немного больше ((275 265-байтовый) размер файла на 275,3 КБ), но это не основная проблема для меня.
Происходит, когда я пробую к пакетной обработке несколько файлов изображений, который приводит к первому имени файла, клонированному в несколько имен файлов, содержащих другое изображение каждый. Со свойствами я установил в следующем наборе команд:
В основном каждое Действие Наутилуса использует следующие параметры:
Команда: convert
Параметры: %F.jpg -quality 80%% %F-80q.jpg
convert path/to/file1.mid.jpg -quality=80% path/to/file1.mid-80q.jpg
Рабочий каталог: %d
Так, результаты видны в этом снимке экрана:
Здесь мы видим каждое изображение, обработанное в различном файле, но просто первое имя файла используется для присвоения новых имен к скопированным файлам. Я желаю результата как:
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%
команда и это отбрасывают большие размеры файла, как Вы видите в следующем изображении:
Кто-либо знает, существует ли что-то еще, что я должен добавить к параметрам, замеченным в ответе muru? Я ценю много Ваших усилий обеспечить справку по этой проблеме.
Я пишу это только для уведомления людей, которых я видел, где это была проблема со сжатием. Файл, который я пытался сжать, уже был достаточно сжат так (как упомянуто в ответе muru):
Процесс просто добавлял наверху, ничего не получая.
Вы не можете использовать %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
Можно сделать это более сложным для обработки любого расширения, при которой точке Вы могли бы также пропустить сценарии использования и Действия.