Автор Тема: Пакетная обработка изображений (resize) [решено]  (Прочитано 3381 раз)

Оффлайн aa

  • Участник
  • *
  • Сообщений: 148
Уважаемые, подскажите пожалуйста.
Задача изменить для многих изображений размер и изменить качество сжатия.
Пока составлял "заклинание" всё работало для 3 файлов.
convert -resize 1024 quality 60 *.JPG foto.jpegНо при запуске для многих изображений через некоторое время после запуска выдает ошибку.
segmentation fault
В чем может быть проблема?

Да, забыл совсем. Дистрибутив Alt linux KDE Обновлен с р6.
« Последнее редактирование: 19.02.2013 06:29:50 от Skull »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 169
    • Домашняя страница
А если запускать отдельно для каждого изображения в цикле:
for f in *.JPG; do convert -resize 1024 quality 60 "$f";done
Андрей Черепанов (cas@)

Оффлайн aa

  • Участник
  • *
  • Сообщений: 148
Увы, не помогло.
$ for f in *.JPG ; do convert -resize 1024 -quality 60 "$f";done
convert: missing an image filename `IMG_4639.JPG' @ error/convert.c/ConvertImageCommand/3011.
строчек по количеству изображений

Оффлайн Spanish ArCher

  • Участник
  • *
  • Сообщений: 1 234
Увы, не помогло.
$ for f in *.JPG ; do convert -resize 1024 -quality 60 "$f";done
convert: missing an image filename `IMG_4639.JPG' @ error/convert.c/ConvertImageCommand/3011.
строчек по количеству изображений
Ему еще и output-file нужно задавать
SYNOPSIS
       convert [input-options] input-file [output-options] output-file

Можно, например, так: создать подкаталог converted и сказать
for f in *.jpg ; do convert -resize 1024 -quality 60 "$f" converted/"$f";done

и все результаты будут помещена в этот каталог.

Кажись так.
Если я попался вам навстречу, Значит вам со мной не по пути.
(С) Воскресение

Оффлайн aa

  • Участник
  • *
  • Сообщений: 148
Нашел такое еще заклинание.

Цитировать
find . -iname "*.JPG" -exec convert -resize 1024 -quality 70 "{}" temp.jpg \; -exec mv -f temp.jpg "{}" \;

Работает! Правда еще бы знать, что тут что означает? Ну да ладно может кому пригодится.

« Последнее редактирование: 18.02.2013 23:19:55 от aa »

Оффлайн aa

  • Участник
  • *
  • Сообщений: 148
for f in *.jpg ; do convert -resize 1024 -quality 60 "$f" converted/"$f";done
Не сработало!
$ for f in *.JPG ; do convert -resize 1024 -quality 60 "$f" converted/"$f" ; done
convert: unable to open image `converted/IMG_4639.JPG':  @ error/blob.c/OpenBlob/2587.

Оффлайн Spanish ArCher

  • Участник
  • *
  • Сообщений: 1 234
for f in *.jpg ; do convert -resize 1024 -quality 60 "$f" converted/"$f";done
Не сработало!
$ for f in *.JPG ; do convert -resize 1024 -quality 60 "$f" converted/"$f" ; done
convert: unable to open image `converted/IMG_4639.JPG':  @ error/blob.c/OpenBlob/2587.

А каталог converted где создали? Как подкаталог текущего каталога и ли где-то сбоку ну улице? Если на улице, то указывайте абсолютный путь.
Если я попался вам навстречу, Значит вам со мной не по пути.
(С) Воскресение

Оффлайн aa

  • Участник
  • *
  • Сообщений: 148
Спасибо! Ваше заклинание тоже отработало!
Тему можно закрывать!

Оффлайн Spanish ArCher

  • Участник
  • *
  • Сообщений: 1 234
Нашел такое еще заклинание.

Цитировать
find . -iname "*.JPG" -exec convert -resize 1024 -quality 70 "{}" temp.jpg \; -exec mv -f temp.jpg "{}" \;

Работает! Правда еще бы знать, что тут что означает? Ну да ладно может кому пригодится.

По-русски это очень многословно получается:найди в текущем каталоге и во всех каталогах, что ниже файлы  "*.JPG" невзирая на регистр,
каждый найденый файл преобразуй convert'ом с заданными параметрами, а результат запиши в temp.jpg
потом этим temp.jpg замени исходный файл, ни о чем не спрашивая.

Но тут можно попасть. Если результат конвертации окажется неожиданным, то исходные файлы уже не вернешь.
Тот же результат можно получить если input-file и output-file дать одинаковые.

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

Вот неплохая статейка
http://www.howtogeek.com/109369/how-to-quickly-resize-convert-modify-images-from-the-linux-terminal/
« Последнее редактирование: 19.02.2013 00:23:17 от Spanish ArCher »
Если я попался вам навстречу, Значит вам со мной не по пути.
(С) Воскресение