Комментарии 157
Реализация данного проекта не бесплатна, в нее вкладываются деньги (территориальным управлением по образованию), чтобы каждая конкретная школа могла в нем участвовать. Модернизация образования, ёпрст. Если же участие проходит не слишком активно, то денежки, получается, вложены впустую, — отсюда и вот… Может быть, неверно сказано, что «контролируется прокуратурой», но неактивным предупреждения периодически присылаются, и вот неделю назад мы писали объяснительную в районную прокуратуру.
какие?
Наконец-то! Дожили! А то раньше в линукс-темах звучало «нафиг нужен этот гуи, если тоже самое можно сделать одной командой в терминале...»
здорово спасибо за пример из жизни — можно еще скриптов и более детально велосипед обьяснить
convert > /dev/null
if [ $? -ne 0 ]; then echo «Error: convert is needed, it's a part of ImageMagick»; fi;
зачем здесь convert > /dev/null и ;fi;? я в скриптах ноль но знаю С++ поэтому синтксис еще не очень
convert > /dev/null
if [ $? -ne 0 ]; then echo «Error: convert is needed, it's a part of ImageMagick»; fi;
зачем здесь convert > /dev/null и ;fi;? я в скриптах ноль но знаю С++ поэтому синтксис еще не очень
Вводим команду convert. Если она выполняется (то бишь найдена и есть в системе), то код возврата будет равен нулю. Если команада не найдена (в частности, Вы увидите вывод типа bash: command not found), то код возврата будет положителен (127), то бишь не равен 0.
Операция ">" означает перенаправление потока вывода. То есть результат выполнения (например, сообщение о том, что команда не найдена) будет не выведено на экран, а направлено на специализированное устройство /dev/null, о котором, я думаю, пояснять не нужно :)
Опция -ne у команды test означает «not equal».
fi; означает завершение условного оператора. В баш-скриптах нет способа выделения блоков команд (если ошибаюсь, поправьте), кроме как do-done; и if-else-fi.
Операция ">" означает перенаправление потока вывода. То есть результат выполнения (например, сообщение о том, что команда не найдена) будет не выведено на экран, а направлено на специализированное устройство /dev/null, о котором, я думаю, пояснять не нужно :)
Опция -ne у команды test означает «not equal».
fi; означает завершение условного оператора. В баш-скриптах нет способа выделения блоков команд (если ошибаюсь, поправьте), кроме как do-done; и if-else-fi.
which convert плохой вариант?! Даже как-то красивее, без всяких перенаправлений. Наверняка есть еще варианты без вызова самой программы.
Есть, я даже рылась по ./configure'ам всяких прог… Не нашлось… См. мой комментарий
запустил на маке половину скрипта- получил :))
./scri: line 6: convert: command not found
./scri: line 7: [127: command not found
./scri: line 14: syntax error near unexpected token `then'
./scri: line 14: `if[-z $1]; then $DIR='pwd';'
./scri: line 6: convert: command not found
./scri: line 7: [127: command not found
./scri: line 14: syntax error near unexpected token `then'
./scri: line 14: `if[-z $1]; then $DIR='pwd';'
Да, конечно, скрипт виноват. Поставьте имеджмаджик.
эм, вообще-то скрипт.
он как раз проверяет чере трюк с > /dev/null наличие этого самого имеджмаджика.
он как раз проверяет чере трюк с > /dev/null наличие этого самого имеджмаджика.
Это стандартная ошибка, типа "./scri: line 7: [127: command not found" говорит лишь о том, что скрипт вы переписывали вручную. В конструкции if [ $? -ne 0 ] все пробелы обязтельны.
Это не заработает. Вот если convert стоит, но вылетает с ошибкой, тогда конструкция:
convert 2>&1 > /dev/null действительно не выведет ничего на экран. В Вашем случае выведет всё равно, так как в девнулл отправили только stdout, забыв про stderr.
Если же convert не установлен, то опять же на stderr про это напишет баш. Можно например вот так:
BIN=`which convert`
if [ -x "$BIN" ]; then echo «convert is here: $BIN»; fi
convert 2>&1 > /dev/null действительно не выведет ничего на экран. В Вашем случае выведет всё равно, так как в девнулл отправили только stdout, забыв про stderr.
Если же convert не установлен, то опять же на stderr про это напишет баш. Можно например вот так:
BIN=`which convert`
if [ -x "$BIN" ]; then echo «convert is here: $BIN»; fi
Всегда пишите аргументы, собираемые из переменных, в кавычках. В противном случае при попытке выполнить convert some folder/some file.jpg ($DIR='some folder', $i='some file') получите много каки.
ну и геморрой же этот ваш юникс-уей
не всегда так однозначно, часто одной небольшой строчкой можно сделать, то что в винде делалось бы полдня включая поиск программ, поиск к ним кряков, запускание одной программы, работы с ней, затем второй с результатами первой и т.д.
пока у меня убунту не стала рабочей системой тоже не понимал этого всего, но сейчас замечаю, что некоторые вещи намного сделать быстрее в консоли, чем в использовать гуи, чего под виндой не хватает.
пока у меня убунту не стала рабочей системой тоже не понимал этого всего, но сейчас замечаю, что некоторые вещи намного сделать быстрее в консоли, чем в использовать гуи, чего под виндой не хватает.
на изучение всех этих команд и чтобы научиться писать эффективные скрипты уйдет больше времени, чем традиционным гуишным способом сделать это а ля виндоус-уэй
написание эффективных скриптов само по себе не есть цель. и изучение тоже.
нужно решить задачу — решаете. параллельно с этим обретаете определенный опыт и навыки.
нужно решить задачу — решаете. параллельно с этим обретаете определенный опыт и навыки.
чтобы решить задачу способом, подобным Вашему, нужны знания, если знаний нет или их не хватает, нужно их восполнять, теряя время
я не искала тех знаний специально, без практической нужды. возможно, Вы себя просто недооцениваете.
Чтобы написать подобный скрипт нужны не намного большие знания нежели чем на поиск и применение соответствующей гуишной программы.
дело в том, что да, возмонжо действительно нужно время.
первое время…
зато девушка получила АВТОМАТИЗИРОВАННЫЙ способ ресайза, потратив 1 раз пусть хоть 3 часа.
а вы предлагаете каждый раз открывать acdsee, переходить в папку, выделять, делать ресайз и тд.
в итоге со временем кто еще выиграет — большой вопрос.
… к тому же скрипты можно объединять, получая то же самое константное время выполнения процесса, а нажатия мышки нет.
первое время…
зато девушка получила АВТОМАТИЗИРОВАННЫЙ способ ресайза, потратив 1 раз пусть хоть 3 часа.
а вы предлагаете каждый раз открывать acdsee, переходить в папку, выделять, делать ресайз и тд.
в итоге со временем кто еще выиграет — большой вопрос.
… к тому же скрипты можно объединять, получая то же самое константное время выполнения процесса, а нажатия мышки нет.
Заметьте, это делается один раз и в результате появляются дополнительные скилы для автоматизации всего и вся в дальнейшем.
Ваш же путь — снова и снова изо дня в день повторять бессмысленное машевозилово. Это, безусловно, очень сильно экономит время, ага! Скилы от этого — только кистевой туннельный синдром… :(
Одни раз — хорошо сделать гуем. Каждый день — извините, гуем в этом случае будет пользоваться только идиот или мазохист.
Ваш же путь — снова и снова изо дня в день повторять бессмысленное машевозилово. Это, безусловно, очень сильно экономит время, ага! Скилы от этого — только кистевой туннельный синдром… :(
Одни раз — хорошо сделать гуем. Каждый день — извините, гуем в этом случае будет пользоваться только идиот или мазохист.
>на изучение всех этих команд и чтобы научиться писать эффективные скрипты уйдет больше времени, чем традиционным гуишным способом сделать это а ля виндоус-уэй
Возможно. Но изучение и написание скрипта — это делается один раз, а «сделать а-ля виндоус-уэй традиционным гуишным способом» — это делается каждый раз.
Почувствуйте разницу.
Возможно. Но изучение и написание скрипта — это делается один раз, а «сделать а-ля виндоус-уэй традиционным гуишным способом» — это делается каждый раз.
Почувствуйте разницу.
Слеш убирается легко, например:
echo '/bugaga/aaa/SLASH/' | sed -e 's/\/$//'
Выведет: "/bugaga/aaa/SLASH". =)))
echo '/bugaga/aaa/SLASH/' | sed -e 's/\/$//'
Выведет: "/bugaga/aaa/SLASH". =)))
Блин, опередили)
Спасиб, буду знать :) Но, как водится, кривое решение приходит в голову быстрее, чем идея погуглить…
Было дело, когда писала конфиг для conky, нужно было выводить ip адрес интерфейса. Пока заметила, что у меня нифига не работает из-за какой-то лишней скобочки, успела написать вырезающий из ifconfig'а скрипт :)
Было дело, когда писала конфиг для conky, нужно было выводить ip адрес интерфейса. Пока заметила, что у меня нифига не работает из-за какой-то лишней скобочки, успела написать вырезающий из ifconfig'а скрипт :)
Можно еще проще: echo ${DIR%/}
А после ресайза бывает полезно немного увеличить четкость, тогда снимки выглядят намного приятней (-sharpen, кажется)
А после ресайза бывает полезно немного увеличить четкость, тогда снимки выглядят намного приятней (-sharpen, кажется)
Поправьте пожалуйста:
"(а сам ImageMaick и того мощнее)", забыли «g» в слове Magick:)
"(а сам ImageMaick и того мощнее)", забыли «g» в слове Magick:)
«Конвертом» можно заодно и подписывать фотографии.
Вместо for i можно использовать xargs.
у меня вся публикация занимала одну строчку
ls -1 *.JPG | xargs -I '{}' convert -despeckle -noise 3 -resize 25% -equalize -normalize -font helvetica -draw «text 10,10 KARTz.ru» -box white -blur 1 '{}' '/mnt/server/photo/p_{}'
Вместо for i можно использовать xargs.
у меня вся публикация занимала одну строчку
ls -1 *.JPG | xargs -I '{}' convert -despeckle -noise 3 -resize 25% -equalize -normalize -font helvetica -draw «text 10,10 KARTz.ru» -box white -blur 1 '{}' '/mnt/server/photo/p_{}'
mogrify -resize 1024 ./*.jpg
хабрадевушка! айда плюсовать!
простите отвлекся. интересное решение, но к сожалению я любитель windows-way решений, поэтому оценить не могу.
недавно стояла задача заресайзить знакомому большую тучу картинок под небольшое разрешение нашлось гуевое решение, ctrl+A и в контекстном меню нужное разрешение(под win естественно)
простите отвлекся. интересное решение, но к сожалению я любитель windows-way решений, поэтому оценить не могу.
недавно стояла задача заресайзить знакомому большую тучу картинок под небольшое разрешение нашлось гуевое решение, ctrl+A и в контекстном меню нужное разрешение(под win естественно)
как трогательно вы с этими «for i in» )
вообще-то, это тривиально, но женский род от первого лица все меняет — _для девушки_ — весьма похвальные достижения в bash-е!
вообще-то, это тривиально, но женский род от первого лица все меняет — _для девушки_ — весьма похвальные достижения в bash-е!
вообще-то, в топике упоминается, что это тривиально, плюс Вам полезно будет почитать, что в том абзаце еще написано.
про for… — да, люблю я его )
так сразу всплывают детские воспоминания — basic и все такое…
про for… — да, люблю я его )
так сразу всплывают детские воспоминания — basic и все такое…
>>женский род от первого лица все меняет
хоть это и правда… но не очень приятно, если честно.
хоть это и правда… но не очень приятно, если честно.
т.е. когда статью перехваливают, умалчивают о ее проблемах и сыплют комплиментами — в силу гендерного фактора — это вас не оскорбляет, а когда вам высказывают адекватное мнение, без неуместного джентельменства и демонстрации бицепса — это повод для неприязни?
странная у нас тут эмансипация цветёт.
PS: может я, конечно, зря так выделил _для девушки_ (на деле тональность комментария была скорее одобрительной) — извините, я не имел в виду что все бабы дуры, скорее что их склонность к доминированию эмоционального интеллекта, редко дает им возможность достичь результатов в математике, и тем приятнее нам видеть эти результаты.
странная у нас тут эмансипация цветёт.
PS: может я, конечно, зря так выделил _для девушки_ (на деле тональность комментария была скорее одобрительной) — извините, я не имел в виду что все бабы дуры, скорее что их склонность к доминированию эмоционального интеллекта, редко дает им возможность достичь результатов в математике, и тем приятнее нам видеть эти результаты.
«когда статью перехваливают… в силу гендерного фактора… это вас не оскорбляет»
как это? я написала, что мне это неприятно: habrahabr.ru/blogs/linux/82394/#comment_2445329
как это? я написала, что мне это неприятно: habrahabr.ru/blogs/linux/82394/#comment_2445329
> _для девушки_ — весьма похвальные достижения в bash-е!
Намекаете, что любой _девушке_ нужна куча времени для освоения тривиальных вещей? Думаю, за это неплохо было бы и извиниться, тов. Siddthartha.
Намекаете, что любой _девушке_ нужна куча времени для освоения тривиальных вещей? Думаю, за это неплохо было бы и извиниться, тов. Siddthartha.
поддерживаю!)
молодой человек, вы такой справедливый, хватайте пока не убежала, редкий вид, у нее консоль всегда открыта и фотография в купальнике ничего.
а толковать и перетолковывать мои слова — не надо.
а толковать и перетолковывать мои слова — не надо.
Ещё можно оформить в виде скрипта к наутилусу, довольно удобно будет.
Извините за нескромный вопрос, а вы женаты? =)
Извините за нескромный вопрос, а вы женаты? =)
Про «convert > /dev/null» уже сказали выше
Про велосипед со слешем: либо через sed, как было выше, либо вообще не заморачиваться. Сравните результат:
ls -l /var//tmp
ls -l /var/tmp
> for i in `ls $DIR`;
> do
> cp $DIR/$i $DIR.old;
> done
Лучше так:
cp "$DIR/*" "$DIR.old/"
Кавычки на случай, если в имени встретится, например, пробел.
> for i in `ls $DIR`;
> do
> convert $DIR/$i -resize 1228800@ $DIR/$i;
> if [ $? -eq 0 ]; then
> echo "$i successfully resized";
> else ERR=$[$ERR+1]; #считаем ошибки
> fi;
> done;
лучше так
for i in $DIR/*;
do
convert "$i" -resize 1228800@ "$i";
if [ $? -eq 0 ]; then
echo "$i successfully resized";
else ERR=$[$ERR+1]; #считаем ошибки
fi;
done;
Про велосипед со слешем: либо через sed, как было выше, либо вообще не заморачиваться. Сравните результат:
ls -l /var//tmp
ls -l /var/tmp
> for i in `ls $DIR`;
> do
> cp $DIR/$i $DIR.old;
> done
Лучше так:
cp "$DIR/*" "$DIR.old/"
Кавычки на случай, если в имени встретится, например, пробел.
> for i in `ls $DIR`;
> do
> convert $DIR/$i -resize 1228800@ $DIR/$i;
> if [ $? -eq 0 ]; then
> echo "$i successfully resized";
> else ERR=$[$ERR+1]; #считаем ошибки
> fi;
> done;
лучше так
for i in $DIR/*;
do
convert "$i" -resize 1228800@ "$i";
if [ $? -eq 0 ]; then
echo "$i successfully resized";
else ERR=$[$ERR+1]; #считаем ошибки
fi;
done;
про слеш, не забываем, там еще mkdir "$DIR.old";
а во всем остальном, конечно, согласна, просто писалось это «на скорую руку».
а во всем остальном, конечно, согласна, просто писалось это «на скорую руку».
Девушка! Фотку в студию! :)
Девушка… unix-way… bash-скрипт…
Выходи за меня!
Выходи за меня!
Скрипт действительно тривиальный и про прокуратуру, возможно, было бы интереснее, но ход мысли мне нравится. А чего фотки в профиле нету?
а зачем? Вы здесь за этим?
Да, вот после этого понимаешь зачем нужны все эти смайлики, теги иронии и сарказма. А фотки, что выложил «перволассник» действительно ваши? Всегда же приятно, когда девушка умная, да ещё и красивая.
да, мои. только четырехлетней давности.
Ну так вы же просто красавица! И скрипты пишете, да поди ещё и на машинке вышивать умеете. Золото просто. Ну, правда.
ан нет, не умею :)
Может давайте всё-таки в приват? А то о вас, malicious, определённое мнение складывается, не противоречащее нику.
напомнило
ой, теги же мне больше нельзя…
bit.ly/4GhHSM
bit.ly/4GhHSM
«Что, ежели, сестрица,
При красоте такой и петь ты мастерица,-
Ведь ты б у нас была царь-птица!»
ЗЫ Извините — не удержался ;)))
При красоте такой и петь ты мастерица,-
Ведь ты б у нас была царь-птица!»
ЗЫ Извините — не удержался ;)))
Фотки в профиле есть где-то у 10% пользователей. Чего вы именно данного пользователя своими фотками достаёте? Давайте тогда каждому из 90% в приват напишите.
Это конечно все хорошо. Но в гноме уже есть готовый набор скриптов для изменения картинок (масштабирования поворота и тд.), пакет называется: nautilus-image-converter
И далее в наутилусе выбираем все фотографии которые хотим изменить, в меню выбираем масштабирование:

Так что любое количество фотографий можно изменить все в пару кликов.
И далее в наутилусе выбираем все фотографии которые хотим изменить, в меню выбираем масштабирование:

Так что любое количество фотографий можно изменить все в пару кликов.
то есть, вы мне предлагаете поставить: наутилус, к нему еще пакет, это все потянет за собой гтк, и тд и тп… ради скрипта, который я и сама могу написать, да еще и использовать его легче?
ну тогда надо было указать в начале статьи что мы работаем в кедах или чем то другом. Так как ничего сказано не было считаем что стоит один из самых популярных дистров — убунта. Так что если у вас гном и не хочется парится со скриптами проще поставить этот пакет.
Да откуда ж вы все беретесь?!
linux != ubuntu.
Для меня вот, самый популярный дистрибутив — arch.
linux != ubuntu.
Для меня вот, самый популярный дистрибутив — arch.
для вас может быть, но я говорю об общей популярности дистрибутивов, и убунта тут выигрывает.
Это как это самый популярный для вас? Это по числу установок на ваш компьютер что ли? А арч действительно хорош.
Но вот установка… Особенно для новичков. А так да, достаточно стройный и неплохо организованный.
По данным distrowatch Ubuntu — самый популярный, но не настолько, чтобы говорить что Linux = Ubuntu, как когда-то говорили browser = IE.
По числу установок среди моих знакомых. Убунту неудобна и медленна, вот люди и выбирают иные решения.
Факторов больше, чем вы считаете. Писать скрипт для одноразового действия не очень разумно. Но выполнять одни и те жу «пару кликов» в гуе десяток раз в неделю тоже глупо.
1) «что мы работаем в кедах или чем то другом. » Мы работаем в командной строке. Но если Вас так интересует, у меня Enlightenment.
2) «Так как ничего сказано не было считаем что» — ? Это только Вы считаете.
3) «один из самых популярных дистров — убунта» :D (извините)
4) «не хочется парится со скриптами». Простите, если я написала эту статью, то эта фраза априори не обо мне. Особенно если бы Вы ее дочитали.
2) «Так как ничего сказано не было считаем что» — ? Это только Вы считаете.
3) «один из самых популярных дистров — убунта» :D (извините)
4) «не хочется парится со скриптами». Простите, если я написала эту статью, то эта фраза априори не обо мне. Особенно если бы Вы ее дочитали.
1. с чего решили что скрипт нельзя использовать не из консоли?
2. если это серверный вариант, тогда можно было еще больше автоматизировать, резайзить и сразу лить на сервак в нужную папку.
3. что есть, то есть
4. ни кто не говорит, что что то не так со скриптом. Речь лишь о том что его или аналогичный можно использовать так же из гуи, что дает большую гибкость в работе.
Почему решили что все должны работать из консоли? Гуй такой же инструмент для работы как и консоль. Если он не нравится вам не значит что он не нравится остальным.
2. если это серверный вариант, тогда можно было еще больше автоматизировать, резайзить и сразу лить на сервак в нужную папку.
3. что есть, то есть
4. ни кто не говорит, что что то не так со скриптом. Речь лишь о том что его или аналогичный можно использовать так же из гуи, что дает большую гибкость в работе.
Почему решили что все должны работать из консоли? Гуй такой же инструмент для работы как и консоль. Если он не нравится вам не значит что он не нравится остальным.
Вы о чём? ТС уже раз десять сказала, что работает в консоли, но ни разу, что гуй неудобен. А вот я скажу. :)
Гуй неудобен и большую гибкость в работе не даёт, т.к. гуй — это *только* уй (UI), т.е. пользовательский интерфейс. Консоль с текстовыми потоками — это и пользовательский интерфейс и интерфейс для огромного количества утилит по обработке данных. О какой гибкости может идти речь?
Гуй неудобен и большую гибкость в работе не даёт, т.к. гуй — это *только* уй (UI), т.е. пользовательский интерфейс. Консоль с текстовыми потоками — это и пользовательский интерфейс и интерфейс для огромного количества утилит по обработке данных. О какой гибкости может идти речь?
А этот скрипт используется вообще без кликов :P
угу, только что бы его запустить, надо:
1. открыть консоль
2. перейти в папку с картинками
3. запустить его
;)
1. открыть консоль
2. перейти в папку с картинками
3. запустить его
;)
А запускать nautilus-image-converter и показывать ему где лежат картинки не нужно? Поделитесь своим libastral.so
Сразу видно что не пользовались :)
Ну вот ты перешел в дирикторию с картинками, понял что надо изменить размер. Просто выделил нужные и по клику правой кнопки выбрал из меню масштабирование.
Ну вот ты перешел в дирикторию с картинками, понял что надо изменить размер. Просто выделил нужные и по клику правой кнопки выбрал из меню масштабирование.
Для, скажем, 3-5 тысяч картинок это долго. Опять же тумбики будут строится :-)
Из крайности в крайность :)
Ну скажем если 3-5тыщ, то
1. можно тот же скрипт пустить из консоли
2. отключить предпросмотр
Опять же для того и написал этот метод, что иногда бывает проще из консоли, иногда проще кликнуть правой кнопкой.
Так же можно не заходит в эту директорию, а прям кликнуть по ней и скормить ее скрипту через правый клик.
Ну скажем если 3-5тыщ, то
1. можно тот же скрипт пустить из консоли
2. отключить предпросмотр
Опять же для того и написал этот метод, что иногда бывает проще из консоли, иногда проще кликнуть правой кнопкой.
Так же можно не заходит в эту директорию, а прям кликнуть по ней и скормить ее скрипту через правый клик.
Я понял, что вы имеете в виду! :)
Проблема в том, что, вот, у вас, например, всегда запущен наутилус, а у меня urxvt с zsh.
Проблема в том, что, вот, у вас, например, всегда запущен наутилус, а у меня urxvt с zsh.
еще раз повторяю (хотя поднадоело слегка). консоль у меня постоянно открыта. я ей активно пользуюсь. переходить в папку с «картинками» не нужно (вы бы это поняли, если бы а) прочитали статью; б) понимали бы, о чем говорите). запустить скрипт — от 1 до 5 раз нажать стрелку вверх и ентер.
Лучшего файлового менеджера чем mc я не знаю. И быстрый и удобный. Мне проще использовать этот скрипт.
для этого вверху и описан скрипт, а я написал для тех кто хочет сразу видеть картинки и быстро их конвертнуть. Тем более что переключится с клавы намышку лениво, так же как и с мышки на клаву.
То есть если ты сидишь в консольке, то хватать мышку что бы ресайзнуть одну картинку будет ленно.
Так же как если ты работаешь с картинками в гимпе/инкскейпе, то что бы конвернуть одну картинку надо выполнить кучу действий, то согласись что по правой кнопке будет горазддо быстрее.
Кстати если у вас гном, то описанный в шапке скрипт можно кинуть в наутилус скриптс, и так же выполнять его по правой кнопке на любом количестве картинок.
То есть если ты сидишь в консольке, то хватать мышку что бы ресайзнуть одну картинку будет ленно.
Так же как если ты работаешь с картинками в гимпе/инкскейпе, то что бы конвернуть одну картинку надо выполнить кучу действий, то согласись что по правой кнопке будет горазддо быстрее.
Кстати если у вас гном, то описанный в шапке скрипт можно кинуть в наутилус скриптс, и так же выполнять его по правой кнопке на любом количестве картинок.
Мне кажется в консоли вообще не нужен никакой фейл менеджер.
Симпатичная девушка ;-)
Количество оффтопа в теме приближается к 50%. Хабр уже не тот.
Топикстартер — девушка, разбирающаяся в линуксе. Как такое можно было упустить аудитории Хабра?
И да простят меня Боги, но от оффтопа создалось ощущение, что кто-то где-то ВНЕЗАПНО крикнул «Девушка на хабре!» и, сметая все на своем пути, в тему ломанулись сотни человек, которые девушку видели только на фотографии.
И да простят меня Боги, но от оффтопа создалось ощущение, что кто-то где-то ВНЕЗАПНО крикнул «Девушка на хабре!» и, сметая все на своем пути, в тему ломанулись сотни человек, которые девушку видели только на фотографии.
Ничего удивительного. Симпатичные девушки, пишущие адекватные статьи на хабре большая редкость. А не тот хабр совсем не из-за таких тем и комментариев… Скорее по причине генерализации тематики.
Есть ещё такая замечательная штука — nconvert
с xnview.com
Плюсы по сравнению с ImageMagick:
маленькая, но такая же мощная,
всё своё носит с собой, от библиотечного окружения почти не зависит
работает с огромным количеством форматов
с xnview.com
Плюсы по сравнению с ImageMagick:
маленькая, но такая же мощная,
всё своё носит с собой, от библиотечного окружения почти не зависит
работает с огромным количеством форматов
Кстати, почитав комменты, поняла, что принято считать, что windows-way для этого дела — скачать ACDSee, крякнуть и воспользоваться одной из его миллиона функций для тех же целей.
Ан нет, настоящий freeware windows-way — это прога Easy Graphic Converter, инсталятор весит 813kb, и умеет она ровно две вещи — конвертацию популярнейших форматов без особых настроек и ресайз, как отдельных файлов, так и папок. Единственный минус — ресайз там не очень умный, придётся отдельно ресайзить горизонтальные и вертикальные фото.
В общем, на статью на хабре не тянет, в отличие от unix-way, но кому-то может быть полезно.
Ан нет, настоящий freeware windows-way — это прога Easy Graphic Converter, инсталятор весит 813kb, и умеет она ровно две вещи — конвертацию популярнейших форматов без особых настроек и ресайз, как отдельных файлов, так и папок. Единственный минус — ресайз там не очень умный, придётся отдельно ресайзить горизонтальные и вертикальные фото.
В общем, на статью на хабре не тянет, в отличие от unix-way, но кому-то может быть полезно.
Кстати, почитав комменты, поняла, что принято считать, что windows-way для этого дела — скачать ACDSee, крякнуть и воспользоваться одной из его миллиона функций для тех же целей.Ну вообще-то под Windows можно использовать тот же ImageMagick и аналогичные cmd-скрипты.
Впрочем, можно считать, что это unix-way, портированный под Windows :)
Вот эта штука функционально эквивалентна вашему скрипту, если я ничего не упустил.
>& работает в csh и bash.
#!/bin/sh function die { echo $1 exit } #проверяем, установлен ли convert which convert >& /dev/null || die "Error: convert is needed, it's a part of ImageMagick" DIR=$1 #наши старые файлы копируем в DIR.old mkdir "$DIR.old" cp $DIR/* $DIR.old/ echo "Start resizing to 1280x960...." mogrify -resize 1280x960 $DIR/* || die "Job done with some errors." echo "Job done!"; echo "You can find your old files in $DIR.old"
>& работает в csh и bash.
Точно так же resiz'ю,
только я еще с помощью утилиты exiftool выяняю «Оринтацию снимка» — и если надо «convert -rotate ...»
только я еще с помощью утилиты exiftool выяняю «Оринтацию снимка» — и если надо «convert -rotate ...»
Спасибо! :)
А слеш легко убирается командой realpath. Она ещё и проверит существует ли путь:
А слеш легко убирается командой realpath. Она ещё и проверит существует ли путь:
$ realpath /home/ ; echo $?
/home
0
$ realpath /home ; echo $?
/home
0
$ realpath /404 ; echo $?
/404: No such file or directory
1
Ещё порекомендую проверять наличие convert следующим способом:
Так и короче, и правильнее :)
Ошибки, конечно же, нужно выводить в stderr
which convert >/dev/null || { echo 'Error: ImageMagick is not installed!' >&2 ; exit 10 ; }
Так и короче, и правильнее :)
Ошибки, конечно же, нужно выводить в stderr
Или вот, разминка для пальцев.
Так быстрее выйдет, и модифицировать опции легче, сразу при наборе. А наличие конверт пользователю наполняющему сайты контентом и так известно. :)
current_dir=old_path new_dir=new_path && for i in $current_dir; do convert --all-your-options $i $new_dir; done
Так быстрее выйдет, и модифицировать опции легче, сразу при наборе. А наличие конверт пользователю наполняющему сайты контентом и так известно. :)
# велосипед, убирающий "/" в конце
велосипед, действительно. есть команда dirname для этого :)
PS ещё можно изучить её противоположность — basename.
велосипед, действительно. есть команда dirname для этого :)
PS ещё можно изучить её противоположность — basename.
IrfanView прекрасно работает через wine.
статья не о том, что под linux нет гуишных приложений, решающих задачу.
вы предлагаете пользоваться командной строкой windows из-под wine, потому что там есть irfanview, вместо того, чтобы пользоваться консолью linux, где есть convert?
настолько любить windows — паранойя.
настолько любить windows — паранойя.
о, 2й лицей? )
Бррр… какой — то велосипед получается… Любое количество фото ресайзится за пару кликов (я про Win). Пробовал разобраться со скриптами в GIMP — вот это кошмар… Еще — а кроме ресайза никакой обработки не производится? Уровни/кривые, баланс цвета, геометрия и проч? Или тупо ресайзнули и залили, так, чтоб было, и прокуратура (тут я вообще не понял) в покое оставила?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Скрипт для обработки фотографий: unix-way среди нас