Как стать автором
Обновить

Скрипт для уменьшения изображений и еще парочка полезных функций

Время на прочтение2 мин
Количество просмотров2.4K
Доброго времени суток всем!
Немножко вступления. Я давно мечтала написать эту маленькую программку… Долго не бралась, потому что думала, что это очень сложно:) но в итоге, всё получилось довольно просто и быстро!
Я иногда занимаюсь обновлением сайта с большим количеством картинок. Когда мне приносят кучу фотографий абсолютно разного разрешения, которые надо подогнать под один размер — я прихожу в ужас… но так или иначе — ужимать надо.
В итоге, так родился этот скрипт.
Так же, если у вас скопилось очень много «профессиональных» фотографий, в которых важно только основная мысль, а не качество, то вам тоже не помешает им воспользоваться!

Возможности:
1) Изменение размера файла или всех изображений в папке по заданной маске
2) Оптимизация изображений
3) Конвертация в доступные форматы (jpg, gif, bmp, png..., в общем много там форматов)

скрипт требует установленного пакета imagemagick
у меня он стоял (наверно, потому что у меня LinuxMint). На убунте надеюсь, что тоже.

У него есть несколько неприятных свойств:
1) с файлами, у которых в именах есть пробелы, буду происходить недоразумения, так что лучше их переименовать.
2) очень чувствителен к регистрам (как в и всё в мире *nix), так что помните, что jpeg и JPEG — это разные вещи!
3) может быть для кого-то покажеться неочень friendly, но если всё делать так, как он просит, то всё будет хорошо

ну, вот, собственно, и сам код:
#!/bin/bash
function Resize {
echo "Enter name of file (with directory) (Ex: /home/user/Desktop/picture.jpg)"
echo "or enter mask to resize all pictures in folder (Ex: /home/user/*.jpg)"
read nfile
echo "Enter size or percent (50% or 640x480 or only x-size)" #здесь он изменяет размеры исходных файлов. так что если вы уменьшили, вам не понравилось и вы решили увеличить обратно, то получите "жесткий пиксель":)
read size
mogrify -resize $size $nfile
echo "Done"
read Keypress
}
function Convert { #при конвертации исходные файлы остаются, он добавляет новые с таким же именем,но другим расширением
echo "Enter name of file (with directory) (Ex: /home/user/Desktop/picture.jpg)"
echo "or enter mask to convert all pictures in folder (Ex: /home/user/*.jpg)"
read nfile
echo "Enter type (just png or jpg without mask)"
read typep
mogrify -format $typep $nfile
echo "Done"
read Keypress
}

function Optim {
echo "Enter name of file (with directory) (Ex: /home/user/Desktop/picture.jpg)"
echo "or enter mask to optimize all pictures in folder (Ex: /home/user/*.jpg)"
read nfile
echo "Enter name of folder to save pictures " #оставляет старые файлы, а оптимизированные пишет в заданную папку (не советую сохранять их в ту же папку, их станет больше, чем в 2 раза....)
read nfold
mkdir $nfold
convert $nfile -type optimize $nfold/pic.jpg #новые файлы будут выглядеть как pic_0.jpg если не нравиться pic, можете написать img или что хотите, но счётчик _i он будет приписывать
echo "Done!"
read Keypress

}
#менюшка
while [ $var=true ]; do
echo
echo "---------MENU---------"
select var in "Resize" "Optimize" "Convert" "Exit"; do
break
done
echo "$var"
case $var in
"Resize") Resize;;
"Optimize") Optim;;
"Convert") Convert;;
"Exit") exit ;;
esac
done


скрипт писала в первый раз, так что не ругаться сильно!)
Теги:
Хабы:
Всего голосов 15: ↑10 и ↓5+5
Комментарии2

Публикации