У меня есть папка красочных изображений в PNG и JPEG. При помощи file
в Linux я вижу, что изображения PNG - все PNG image data, ... x ..., 8-bit/color RGBA, non-interlaced
где их высота и ширина отличаются. И изображения JPEG - все JPEG image data, JFIF standard 1.01
. Их размер может составить 500KB
.
Я могу использовать find . -type f -size +10k -exec ls -l {} \;
перечислять все изображения, размер которых выше 10Kb
.
Я могу также использовать convert input.png -geometry x150 output.png
изменить размер высоты одного изображения к 150px
не изменяя отношение высоты/ширины. или mogrify -geometry x150 *
изменить размер всех изображений в папке.
Делает любой знает, как объединение, эти 2 команды и изменяют размер всех изображений, размер которых выше 10Kb
в папке?
Я предполагаю, что в текущем каталоге есть только файлы изображений. Если нет, вы можете указать две команды: одну с -name "*.jpg"
и одну с -name "*.png"
.
Попробуйте эту команду, чтобы увидеть, какие файлы выбраны (избегайте уничтожения файлов, которые вы хотите сохранить),
find . -type f -name "*" -size +10k -exec echo mogrify -geometry x150 {} \;
и, если все в порядке, удалите echo
, чтобы использовать эту команду для сжатия слишком больших файлов. большой
find . -type f -name "*" -size +10k -exec mogrify -geometry x150 {} \;
Возможно, размер 10k не соответствует -geometry x150
, поэтому вы должны изменить его в зависимости от типа изображений.
Это создаст папку с вашими изображениями с измененным размером, не будет касаться исходных файлов и поместит туда изображения с измененным размером.
Это зарезервирует ваши исходные изображения, которые вы можете заменить, если вы удовлетворены новыми изображениями с измененным размером.
#!/bin/bash
[ ! -d resized ] && mkdir resized
while read image; do
echo "Resizing [$image] to [resized/$image]"
convert $image -geometry x150 "resized/$image"
done < <(find . -type f -size +10k -exec ls {} \;)
Почему бы не выполнить преобразование от находки?
find . -type f -size +10k -exec convert {} -geometry x150 {}.png \;
Вы должны rename
файлы от *.pic.png
к чему-то полезному. Но это должно работать.