LINUX.ORG.RU

#!/bin/sh тумаю..


0

0

У меня эта конструкция работает только с одним файлом, который я передаю аргументом после имени скрипта. Если же я хочу обработать все файлы в каталоге, не выходит..
Думать в сторону eval?

#!/bin/sh

# если аргументов нет, тогда делать это со всеми файлами в каталоге
case $# in
0)
FILENAME=`find . -maxdepth 1 -name "*"`
;;
# если аргументы есть, тогда только с тем файлом, который указан
*)
FILENAME=`echo "$1"`
;;
esac

# собственно что делаю, преобразую изображение
for i in $FILENAME; do
time tifftopnm $FILENAME | \
pamscale 2 | ppmbrighten -value +200 | \
ppmtopgm | pgmtopbm -threshold | \
pnmtotiff -g4 > tmpfile.tiff
mv tmpfile.tiff $FILENAME
done

★★★

Второй строкой вставь
echo $#
и посмотри на результат

sdio ★★★★★
()
Ответ на: комментарий от engage

Сделал вот так:

#!/bin/sh

case $# in
0)
FILENAME=`find . -maxdepth 1 -name "*"`
;;
*)
FILENAME=`echo "$1"`
;;
esac

for i in $FILENAME; do
echo $FILENAME
done

Получаю вот такое:

$ convit
. ./SCAN240508-01-10-37.TIFF ./SCAN230508-23-11-55.TIFF ./tmpfile.tiff ./SCAN240508-01-11-58.TIFF
. ./SCAN240508-01-10-37.TIFF ./SCAN230508-23-11-55.TIFF ./tmpfile.tiff ./SCAN240508-01-11-58.TIFF
. ./SCAN240508-01-10-37.TIFF ./SCAN230508-23-11-55.TIFF ./tmpfile.tiff ./SCAN240508-01-11-58.TIFF
. ./SCAN240508-01-10-37.TIFF ./SCAN230508-23-11-55.TIFF ./tmpfile.tiff ./SCAN240508-01-11-58.TIFF
. ./SCAN240508-01-10-37.TIFF ./SCAN230508-23-11-55.TIFF ./tmpfile.tiff ./SCAN240508-01-11-58.TIFF

Думаю..

baaba ★★★
() автор топика
Ответ на: комментарий от engage

>кстати. вот тебе ошибка и в первом варианте. потому что ночью надо спать.

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

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

sed s/".\/"//`
Поборол так..
Имею это:
$ convit
.
SCAN240508-01-10-37.TIFF
SCAN230508-23-11-55.TIFF
SCAN240508-01-11-58.TIFF

Думаю, как побороть первое вхождение
Может вообще не тем путём иду,
смотрю окно в Париж, ржу

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

ну и, конечно, не иметь каталогов, попадающих под маску.

engage
()
Ответ на: комментарий от engage

>кстати. а почему не find ... -exec myconvert.sh {} \; ?
Не совсем то что хотелось, но это то же решение, ведь..

baaba ★★★
() автор топика
Ответ на: комментарий от engage

>заменить find . -maxdepth 1 -name "*" на ls -1 "*"?

Огромное спасибище!!
Теперь работает:

[~/bin/convit]

#!/bin/sh
# Depends of: netpbm

case $# in
0)
        FILENAME=`ls -1 .`
        ;;
*)
        FILENAME=`echo "$1"`
        ;;
esac

for i in $FILENAME; do
        tifftopnm $i | \
        pamscale 2 | ppmbrighten -value +200 | \
        ppmtopgm | pgmtopbm -threshold | \
        pnmtotiff -g4 > tmpfile.tiff
        mv tmpfile.tiff $i
done

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

pamscale 2
Вот только это не совсем то.. мне нужна бикубическая интерполяция, а он тупо пикселы подрисовывает, по типу "ближайший сосед"
.. смотрел Gimp-ом

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

Сделал так:
ppmbrighten -value +75
Однако вместо двух секунд - 25

baaba ★★★
() автор топика
Ответ на: комментарий от engage

>ну, тогда я пас. пусть комбайн и тормозит, зато интерполяцию умеет. %-)

Этот то же умеет. Маджик как то не пошёл

Я просто цифровой аналог светокопии для себя нахожу, для массового хранения ч-б графики

baaba ★★★
() автор топика
Ответ на: комментарий от engage

DjVu?

Да, удобен для многостраничных документов..
Но так всё в формате tiff есть. Потом tiff то же умеет многостраничность. Так что DjVu tiff не заменит/отменит, по моим наблюдениям

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

Оптимальным оказалось pamscale 2 -filter hermite
или normal
Десять секунд. Разницы не заметил. Завтра принтером попробую..
Вобщем, если это кому-нибудь будет полезно, вот:

#!/bin/sh
# Конвертирует все изображения в дирректории,
# или файл который передан как аргумент,
# в чёрно-белое изображение, пороговым методом, с
# предварительной интерполяцией на увеличением
# в два раза и осветлением
# на сканере разрешение 150 dpi

case $# in
0)
        FILENAME=`ls -1 .`
        ;;
*)
        FILENAME=`echo "$1"`
        ;;
esac

for i in $FILENAME; do
        time tifftopnm $i | \
        pamscale 2 -filter hermite | \
        ppmbrighten -value +75 | \
        ppmtopgm | pgmtopbm -threshold | \
        pnmtotiff -g4 > tmpfile.tiff
        mv tmpfile.tiff $i
done

baaba ★★★
() автор топика
Ответ на: комментарий от baaba

просто DjVu чисто ч/б жмёт лучше, по-моему. ну, и слой OCR можно добавить. удобно.

engage
()
Ответ на: комментарий от baaba

Это не будет работать с файлами в именах которых есть пробелы. :)

qwe ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.