У меня есть папка, в которой много файлов JPG . Теперь я хочу преобразовать их все в файлы PNG . Я искал на YouTube, но не понял методов. Кроме того, они не были эффективны, так как им приходилось делать одно за другим, сначала создавая действие . А в фотошопе есть другой способ? Например, выбрать папку, выбрать выходную папку и желаемый тип файла?
Например, у меня есть другое программное обеспечение под названием PhotoScape. В этом программном обеспечении есть функция, называемая Пакетная обработка. Но я хочу сделать это в фотошопе. Есть идеи?
Рассмотрите возможность использования ImageMagick или GraphicsMagick. Простой
mogrify -format png * .jpg
или, если вам нравятся расширения в верхнем регистре,
mogrify -format PNG * .JPG
преобразует все файлы JPG в каталоге (папке) в PNG одним махом.
Кстати, ожидайте, что ваши PNG-файлы будут в 10 раз больше, чем JPG, если они являются фотографиями.

-
2Хороший ответ. Несмотря на то, что OP, похоже, хочет использовать Photoshop для преобразования, это эффективное действие, scriptable , и будет хорошим ответом для будущих искателей, у которых нет строгих правил “должен использовать Photoshop ». – scottbb ♦ 07 августа 2016, 21:37
Рассмотрите возможность использования ImageMagick или GraphicsMagick. Простой
mogrify -format png * .jpg
или, если вам нравятся расширения в верхнем регистре,
mogrify -format PNG * .JPG
преобразует все файлы JPG в каталоге (папке) в PNG одним махом.
Кстати, ожидайте, что ваши PNG-файлы будут в 10 раз больше, чем JPG-файлы, если они являются фотографиями.
Посмотрите на пункты меню File-> Automate и File-> Scripts. Возможно, вы могли бы создать каплю или запустить обработчик изображений, хотя я не знаю, позволяют ли они преобразование, в частности, в PNG.
Посмотрите, что Adobe говорит о пакетной обработке, на веб-сайте справки Photoshop.
Возможно, мне что-то не хватает, но при преобразовании существующих jpeg в png вы получите ухудшение качества JPEG и худшее сжатие (при условии, что мы говорим о фотографиях) png вместе …

Посмотрите на пункты меню File-> Automate и File-> Scripts. Возможно, вы могли бы создать каплю или запустить обработчик изображений, хотя я не знаю, позволяют ли они преобразование, в частности, в PNG.
Посмотрите, что Adobe говорит о пакетной обработке, на веб-сайте справки Photoshop.
Возможно, мне что-то не хватает, но при преобразовании существующих jpeg в png вы получите ухудшение качества JPEG и худшее сжатие (при условии, что мы говорим о фотографиях) png вместе …
Сначала весь файл jpeg выберите/откройте фотошоп/нажмите меню окна/Нажмите Действие (Alt + F9)/Нажмите, чтобы создать новое действие/Сделать имя Jpeg в Png/Нажмите запись/Нажмите меню «Файл»/Нажмите, чтобы открыть/Выбрать папку Jpeg (любой файл)/Нажмите Сохранить как/Нажмите папку png; Файл введите: png, затем ok/В действии Нажмите Остановить воспроизведение/запись (нижняя область в левой части)/Нажмите файл/Автоматизировать/Пакетная обработка (Действие: Jpeg в PNG; Источник: папка, Выберите: Папка Jpeg, Поле для отметки: Переопределить в ac ция/Подавить файл/Подавить цвет, Место назначения: папка, Выбрать: Выбрать папку png) Нажмите ок. Затем процесс начнется.
Пожалуйста, посмотрите это видео: Как конвертировать несколько/пакетных изображений с помощью Photoshop CS4

-
Измените свой ответ, чтобы отформатировать его для большей читабельности.. – scottbb ♦ 13 мая ’17 в 14:43
Сначала все файлы jpeg выберите/откройте фотошоп/щелкните меню окна/щелкните действие (Alt + F9)/щелкните создать новый действие/Сделать имя Jpeg в Png/Нажмите запись/Нажмите меню «Файл»/Нажмите «Открыть»/Выберите папку Jpeg (любой файл)/Нажмите «Сохранить как»/Нажмите папку png; Тип файла: png, затем ОК/В действии Нажмите Остановить воспроизведение/запись (вниз область слева)/Щелкните файл/Автоматизация/Пакетная обработка (Действие: Jpeg в PNG; Источник: папка, Выберите: папка Jpeg, Поле отметки: Переопределить в действии/Подавить файл/Подавить цвет, Место назначения: папка, Выбрать: Выбрать png) Нажмите ок. Затем процесс начнется.
Пожалуйста, посмотрите это видео: Как конвертировать несколько/пакетных изображений с помощью Photoshop CS4
Пакетное преобразование PNG в JPG в Linux
Кто-нибудь знает хороший способ пакетного преобразования нескольких PNG в JPG в Linux? (Я использую Ubuntu).
Бинарный файл png2jpg, который я мог бы просто вставить в сценарий оболочки, был бы идеальным.
Ваш лучший выбор было бы использовать ImageMagick.
Я не являюсь экспертом в фактическом использовании, но я знаю, что с этим можно делать практически все, что связано с изображениями!
пример:
convert image.png image.jpg
, который сохранит оригинал, а также создаст преобразованное изображение.
Что касается пакетного преобразования, я думаю, вам нужно использовать инструмент Mogrify, который является частью ImageMagick.
Имейте в виду, что этот перезаписывает старые изображения.
Команда:
mogrify -format jpg * .png
У меня есть еще пара решений.
Самое простое решение, как и большинство уже опубликованных. Простой цикл for в bash.
for i in * .png; преобразовать "$ i" "$ {i%. *}. jpg"; готово
По какой-то причине я стараюсь избегать циклов в bash, так что здесь более unixy подход xargs, использующий bash для изменения имени.
ls -1 * .png | xargs -n 1 bash -c 'convert "$ 0" "$ {0%. *}. jpg"'
Тот, который я использую. Он использует GNU Parallel для одновременного выполнения нескольких заданий, что дает вам повышение производительности. Он установлен по умолчанию во многих системах и почти наверняка присутствует в вашем репозитории (это хорошая программа, которую нужно иметь под рукой).
ls -1 * .png | parallel convert '{}' '{.}. jpg'
Количество заданий по умолчанию равно количеству имеющихся у вас ядер ЦП. Я обнаружил, что использование ЦП лучше, используя 3 задания в моей двухъядерной системе.
ls -1 * .png | parallel -j 3 convert '{}' '{.}. jpg'
И если вам нужна статистика (расчетное время прибытия, выполненные задания, среднее время выполнения задания …)
ls -1 * .png | parallel --eta convert '{}' '{.}. jpg '
Существует также альтернативный синтаксис, если вы используете GNU Parallel.
parallel convert' {} '' { .}. jpg '::: * .png
И аналогичный синтаксис для некоторых других версий (включая debian).
параллельное преобразование '{}' '{.}. jpg' - * .png
-
2+1 для правильного расширения строки bash в for, если бы я мог дать Вы еще раз за упоминание параллели, я бы хотел. Однако есть одна опечатка – вам нужно сделать
done
в конце цикла for. Кроме того, для параллельных операций вы можете избежать использования этогоls
и конвейера с такой конструкцией, как:parallel -j 3 --eta convert '{}' '{.} .jpg '::: * .png
(см. здесь) – Evilsoup 28 янв. ’13 в 3:04 -
Исправлена опечатка. Это крутой синтаксис, о котором я не знал. Я не знаю, какой из них мне больше нравится, вероятно, по той же причине, по которой я предпочитаю не использовать циклы в bash. Я назвал это решением, потому что это, вероятно, более «правильный» способ, но я, вероятно, буду придерживаться метода
ls
для себя, потому что он имеет для меня больше смысла. – Кевин Кокс, 28 янв., 14:04 -
1… хотя следует отметить, что этот синтаксис работает только с параллельным GNU. Параллель, которая упакована в некоторые дистрибутивы Linux (например, Debian и Ubuntu), на самом деле представляет собой другую версию с немного другим синтаксисом (используйте
-
вместо:::
) – и даже тогда в нем, к сожалению, отсутствуют некоторые функции параллельного GNU. – Evilsoup 28 янв. 2013, 14:17 -
(хотя те, кто использует дистрибутивы, которые не упаковывают GNU parallel, могут довольно легко установить его из исходного кода, используя приведенные здесь инструкции) – Evilsoup 28 января 2013 г., 14:24
-
1Если у вас есть каталог с более чем 10 000 изображений PNG в нем. .. команда ls скорее всего завершится ошибкой. Итак, эта команда работает в таких ситуациях:
find. -type f -name '* .png' | parallel --eta convert '{}' '{.}. jpg'
– Ahi Tuna 3 окт. 2018, 13:45
У меня есть еще пара решений.
Самое простое решение, как и большинство уже опубликованных. Простой цикл for в bash.
for i in * .png; преобразовать "$ i" "$ {i%. *}. jpg"; готово
По какой-то причине я стараюсь избегать циклов в bash, так что здесь более unixy подход xargs, использующий bash для изменения имени.
ls -1 * .png | xargs -n 1 bash -c 'convert "$ 0" "$ {0%. *}. jpg"'
Тот, который я использую. Он использует GNU Parallel для одновременного выполнения нескольких заданий, что дает вам повышение производительности. Он установлен по умолчанию во многих системах и почти наверняка присутствует в вашем репозитории (это хорошая программа, которую нужно иметь под рукой).
ls -1 * .png | parallel convert '{}' '{.}. jpg'
Количество заданий по умолчанию равно количеству имеющихся у вас ядер ЦП. Я обнаружил, что использование ЦП лучше, используя 3 задания в моей двухъядерной системе.
ls -1 * .png | parallel -j 3 convert '{}' '{.}. jpg'
И если вам нужна статистика (расчетное время прибытия, выполненные задания, среднее время выполнения задания …)
ls -1 * .png | parallel --eta convert '{}' '{.}. jpg'
Существует также альтернативный синтаксис, если вы используете GNU Parallel.
parallel convert '{}' '{.}. jpg' ::: * .png
И аналогичный синтаксис для некоторых других версий (включая debian) .
параллельное преобразование '{}' '{.}. jpg' - * .png
Команда convert
, имеющаяся во многих дистрибутивах Linux, устанавливается как часть пакета ImageMagick. Вот код bash для запуска convert
для всех файлов PNG в каталоге и избежания этой проблемы двойного расширения:
для img в * .png ; do filename = $ {img%. *} convert "$ filename.png" "$ filename.jpg" done
-
8Согласно странице руководства для convert: «Программа convert является членом набора инструментов ImageMagick (1)». – последний ноябрь 16 ’09 в 4:06
-
1Вы правы. Почему-то я подумал, что это часть другой библиотеки. В любом случае приведенный выше код – это правильный способ автоматизировать пакетное преобразование в каталоге.. – Марчин 16 нояб., 09:17
-
2Вы можете использовать расширение bash, чтобы улучшить эту команду, например:
для f в * .png; преобразовать "$ f" в "$ {f/% png/jpg}"; готово
– Evilsoup 28 янв. 2013, 02:57 -
просто помните, что это чувствительно к регистру. моя камера назвала его * .JPG и не осознавала этого в первую очередь. – tsenapathy 27 мар. ’16 в 1:07
Команда convert
, имеющаяся во многих дистрибутивах Linux, устанавливается как часть пакета ImageMagick. Вот код bash для запуска convert
для всех файлов PNG в каталоге и избежания этой проблемы двойного расширения:
для img в * .png ; do filename = $ {img%. *} convert "$ filename.png" "$ filename.jpg" done
Для тех, кому нужны самые простые команды:
Преобразовать и сохранить исходные файлы:
mogrify -format jpg * .png
Преобразовать и удалить исходные файлы:
mogrify -format jpg * .png && rm * .png
Вроде опаздывает на вечеринку, но просто чтобы прояснить всю путаницу для тех, кому может быть не очень комфортно с cli, вот очень упрощенная ссылка и объяснение.
Пример каталога
bar.pngfoo.pngfoobar.jpg
Сохраняет все исходные файлы png, а также создает файлы jpg.
mogrify -format jpg * .png
Результат
ba r.pngbar.jpgfoo.pngfoo.jpgfoobar.jpg
Объяснение
- mogrify – это часть набора инструментов ImageMagick для обработки изображений.
- mogrify обрабатывает изображения на месте , то есть исходный файл перезаписывается, за исключением
-format
вариант. (С сайта:Этот инструмент похож на преобразование, за исключением того, что исходный файл изображения перезаписывается (если вы не измените суффикс файла с помощью параметра -format)
)
- mogrify обрабатывает изображения на месте , то есть исходный файл перезаписывается, за исключением
- Параметр
- format
указывает, что вы будете изменять формат, а следующим аргументом должен быть тип (в данном случае jpg). - Наконец,
*. png
– это входные файлы (все файлы, оканчивающиеся на .png).
Преобразует все png файлы в jpg, удаляет оригинал.
mogrify -format jpg * .png && rm * .png
Результат
bar.jpgfoo.jpgfoobar. jpg
Объяснение
- Первая часть точно такая же, как и выше, она будет создавать новые файлы jpg.
-
&&
– это логический оператор. Вкратце:- Когда программа завершается, она возвращает статус выхода. Статус
0
означает отсутствие ошибок. - Поскольку
&&
выполняет оценку короткого замыкания, правая часть будет выполняться только в том случае, если ошибок не было . Это полезно, потому что вы можете не захотеть удалять все исходные файлы, если при их преобразовании произошла ошибка.
- Когда программа завершается, она возвращает статус выхода. Статус
-
rm
удаляет файлы.
А теперь вот некоторые полезности для людей, которые хорошо разбираются в клике.
Если вы хотите получить какой-либо результат при преобразовании файлов:
для i в * .png; сделать mogrify -format jpg "$ i" && rm "$ i"; echo "$ i преобразовано в $ {i%. *}. jpg"; готово
Преобразование всех файлов PNG во всех подкаталогах и выдача вывода для каждого из них:
find. -iname '* .png' | пока читал я; сделать mogrify -format jpg "$ i" && rm "$ i"; echo "Преобразовал $ i в $ {i%. *}. jpg"; готово
Преобразовать все файлы png во всех подкаталогах, поместить все полученные файлы jpg в каталог all
, пронумеровать их, удалить исходные файлы png, и отображать вывод для каждого файла по мере его появления:
n = 0; находить . -iname '* .png' | пока читал я; сделать mogrify -format jpg "$ i" && rm "$ i"; fn = "все/$ ((n ++)). jpg"; mv "$ {i%. *}. jpg" "$ fn"; echo "Перемещено $ i в $ fn"; готово

-
Вероятно, лучший ответ, если вы избавитесь от части
во время чтения
(замените или удалите все вместе) … – don_crissti 26 окт., в 12:07 -
@don_crissti, что не так с при чтении? – Стивен Джеффрис, 26 октября 2015, 13:47
-
Это подвержено ошибкам (если вы на 100% не уверены, что имеете дело с разумными именами файлов) и медленным (например, очень, очень, очень медленно). – don_crissti, 26 окт., В 14:01
-
Какое качество JPG по умолчанию и как сохранить временные метки файлов? – Дэн Даскалеску 17 окт., 17:24
-
@DanDascalescu Приведенные выше методы (кроме последнего) сохранят имена файлов, но заменят их расширение, поэтому файлы с отметками времени должны быть в порядке (всегда делайте копию и сначала проверяйте). Согласно ImageMagick, «по умолчанию используется оценочное качество вашего входного изображения, если оно может быть определено, в противном случае 92» (imagemagick.org/script/command-line-options.php#quality) Качество можно указать с помощью -quality где от 1 до 100. – Стивен Джеффрис, 17 октября 2017 г., 21:31
Для тех, кому нужны самые простые команды:
Преобразовать и сохранить исходные файлы:
mogrify -format jpg * .png
Конвертировать и удалить исходные файлы:
mogrify -format jpg * .png && rm * .png
Скорее опаздывает на вечеринку, но просто чтобы прояснить всю путаницу для тех, кому может быть не очень комфортно с cli, вот очень упрощенная ссылка и объяснение.
Пример каталога
bar.pngfoo.pngfoobar. jpg
Сохраняет все исходные файлы png, а также создает файлы jpg.
mogrify -format jpg * .png
Результат
bar.pngbar.jpgfoo.pngfoo.jpgfoobar.jpg
Объяснение
- mogrify является частью набора инструментов ImageMagick для изображения p rocessing.
- mogrify обрабатывает изображения на месте , то есть исходный файл перезаписывается, за исключением
-format
вариант. (С сайта:Этот инструмент похож на преобразование, за исключением того, что исходный файл изображения перезаписывается (если вы не измените суффикс файла с помощью параметра -format)
)
- mogrify обрабатывает изображения на месте , то есть исходный файл перезаписывается, за исключением
- Параметр
- format
указывает, что вы будете изменять формат, а следующим аргументом должен быть тип (в данном случае jpg). - Наконец,
*. png
– это входные файлы (все файлы, оканчивающиеся на .png).
Преобразует все png файлы в jpg, удаляет оригинал.
mogrify -format jpg * .png && rm * .png
Результат
bar.jpgfoo.jpgfoobar.jpg
Объяснение
- Первая часть точно такая же, как и выше, она создает новые файлы jpg.
-
&&
– логический оператор. Вкратце:- Когда программа завершается, она возвращает статус выхода. Статус
0
означает отсутствие ошибок.. - Поскольку
&&
выполняет оценку короткого замыкания, правая часть будет выполнена, только если не было ошибок . Это полезно, потому что вы можете не захотеть удалять все исходные файлы, если при их преобразовании произошла ошибка.
- Когда программа завершается, она возвращает статус выхода. Статус
-
rm
удаляет файлы.
А теперь вот некоторые полезности для людей, которые хорошо разбираются в клике.
Если вы хотите получить какой-либо результат при преобразовании файлов:
для i в * .png; сделать mogrify -format jpg "$ i" && rm "$ i"; echo "$ i преобразовано в $ {i%. *}. jpg"; готово
Преобразование всех файлов PNG во всех подкаталогах и выдача вывода для каждого из них:
find. -iname '* .png' | пока читал я; сделать mogrify -format jpg "$ i" && rm "$ i"; echo "Преобразовал $ i в $ {i%. *}. jpg"; готово
Преобразовать все файлы png во всех подкаталогах, поместить все полученные файлы jpg в каталог all
, пронумеровать их, удалить исходные файлы png, и отображать вывод для каждого файла по мере его появления:
n = 0; находить . -iname '* .png' | пока читал я; сделать mogrify -format jpg "$ i" && rm "$ i"; fn = "все/$ ((n ++)). jpg"; mv "$ {i%. *}. jpg" "$ fn"; echo "Перемещено $ i в $ fn"; готово
Фактический Команда “ png2jpg
“, которую вы ищете, в действительности разделена на две команды, называемые pngtopnm
и cjpeg
, и они часть пакетов netpbm
и libjpeg-progs
соответственно.
png2pnm foo.png | cjpeg> foo.jpeg
Фактическая команда “ png2jpg
“, которую вы ищете, на самом деле разделена на две команды, называемые pngtopnm
и cjpeg
, и они являются частью netpbm
и libjpeg-progs
пакеты соответственно.
png2pnm foo.png | cjpeg> foo.jpeg
найти. -имя "*. png "-print0 | xargs -0 mogrify -format jpg -quality 50
-
1Спасибо за однострочное решение для глубокого/рекурсивного каталога, которое оставляет результирующие файлы
*. jpg
рядом с исходными*. png
файлы, показывает, как уменьшить размер/качество файла и не ломается из-за каких-либо нечетных символов в каталоге или имени файла. – Джоэл Пурра, 28 дек. /div>добавить комментарий |
find. -name "* .png" -print0 | xargs -0 mogrify -format jpg -quality 50
мое быстрое решение для i в $ (ls | grep .png); преобразовать $ i $ (echo $ i.jpg | sed s/.png//g); готово
-
2Это должна быть одна из самых уродливых и запутанных командных строк, которые я когда-либо видел – Evilsoup 28 января 2013 в 2:56
-
1@evilsoup Честно говоря, это элегантно для сценариев оболочки. Утверждать, что это запутанно, несправедливо. – Макс Хауэлл 05 нояб., 17:31
-
8@MaxHowell, чувак. Нет. Вот изящная версия этого:
for f in ./*.png; преобразовать "$ f" "$ {f%. *}. jpg"; готово
. Это позволяет избежать совершенно ненужных вызововls
,grep
иsed
(иecho
, но IIRC, который является встроенным в bash и поэтому не будет иметь/очень небольшое влияние на производительность) и избавляется от двух каналов и двух подоболочек, и требует меньше ввода. Он даже немного более портативен, поскольку не все версииls
безопасны для синтаксического анализа. – Evilsoup 06 нояб. 2013 в 12:08 -
@evilsoup Я исправился! Молодец. – Макс Хауэлл 06 нояб., 13:58
мое быстрое решение для i в $ (ls | grep .png); конвертировать $ i $ (echo $ i.jpg | sed s/. png//г); готово
Много лет слишком поздно, специально для этой цели есть утилита png2jpeg, которую я создал.
Адаптация кода с помощью @Marcin:
#!/bin /shfor img в * .pngdo filename = $ {img%. *} png2jpeg -q 95 -o "$ filename.jpg" "$ filename.png" готово
Слишком поздно, появилась утилита png2jpeg специально для этой цели, которую я создал.
Адаптация код от @Marcin:
#!/bin/shfor img в * .pngdo filename = $ {img%. *} png2jpeg -q 95 -o "$ filename. jpg "" $ filename.png "готово
Для пакетной обработки:
для img в * .png; преобразовать "$ img" "$ img.jpg" готово
Однако в конечном итоге вы получите имена файлов вроде image1.png.jpg.
Это будет работать в bash и, возможно, в bourne. Я не знаю о других оболочках, но единственное отличие, скорее всего, заключается в синтаксисе цикла.
Для пакетной обработки:
для img в * .png; преобразовать "$ img" "$ img.jpg" готово
Однако в конечном итоге вы получите имена файлов вроде image1.png.jpg.
Это будет работать в bash и, возможно, в bourne. Я не знаю о других оболочках, но единственное отличие, скорее всего, заключается в синтаксисе цикла.
Это то, что я использую для преобразования, когда файлы охватывают более одного каталога. Мой исходный файл был TGA в PNG
find. -имя "* .tga" -тип f | sed 's/. tga $//' | xargs -I% convert% .tga% .png
Идея состоит в том, что вы находите
нужные файлы, удаляете расширение и добавляете его обратно с помощью xargs
. Итак, для PNG на JPG вы должны изменить расширения и сделать еще одну вещь для работы с альфа-каналами, а именно установить фон (в этом примере белый, но вы можете изменить его), а затем сгладите изображение
найти. -name "* .png" -type f | sed 's/. png $//' | xargs -I% convert% .png -background white -flatten% .jpg
Это то, что я использую для преобразования, когда файлы охватывают более одного каталога. Мой исходный файл был TGA в PNG
find. -имя "* .tga" -тип f | sed 's/. tga $//' | xargs -I% convert% .tga% .png
Идея состоит в том, что вы находите
нужные файлы, удаляете расширение и добавляете его обратно с помощью xargs
. Итак, для PNG на JPG вы должны изменить расширения и сделать еще одну вещь для работы с альфа-каналами, а именно установить фон (в этом примере белый, но вы можете изменить его), а затем сгладите изображение
найти. -name "* .png" -type f | sed 's/. png $//' | xargs -I% convert% .png -background white -flatten% .jpg
Если ваш PNG прозрачный, попробуйте добавить черный bg перед преобразованием:
mogrify -format jpg -background black -flatten * .png
или белый bg:
mogrify -format jpg -background white -flatten * .png

-
Спасибо. Последний комментарий, но спас меня от того, чтобы спуститься в кроличью нору, выясняя почему? >> mogrify: невозможно открыть изображение ‘jpg:’: нет такого файла или каталога @ error/blob.c/OpenBlob/3496. – Slabo 23 апр. ’20 в 21:20
Если ваш PNG прозрачный, попробуйте добавить черный bg перед преобразованием:
mogrify -format jpg -background черный -flatten * .png
или белый bg:
mogrify -format jpg -background белый -flatten * .png