LINUX.ORG.RU

Imagemagick - конвертация


0

0

У меня такая задача, хранить чёрно-белые копии документов, например планы БТИ, расписки, чертежи, рисунки, от руки, и прочее. Для конвертации изображений со сканера предполагаю использовать утилиты коммандной строки, Imagemagick. Сначала интерполирую изображение на увеличение в два раза (на сканере 150dpi ибо так значительно быстрей), затем преобразую его в однобитную глубину, Grayscale, с компрессией Group4, так мне кажется оптимально. Мой вопрос, как описать это более компактно? Вот что у меня:

find . -name "SCAN*.TIFF" | while read w; do

convert $w -resize 200% $w
convert $w -colorspace Gray -depth 1 -negate $w
convert $w -compress Group4 $w

done

То есть повторения, как то не очень.. кто сталкивался, знает синтаксис Imagemagick, можете поделится наработками, а то велик придумываю :-\

Вот пример сокращения синтаксиса, на ихнем сайте:

convert label.gif +matte \
\( +clone -shade 110x90 -normalize -negate +clone -compose Plus -composite \) \
\( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \
-delete 0 +swap -compose Multiply -composite button.gif

Но на свой пример я положить это немогу..

Спасибо!

ЗЫ, вот как оно работает:

$ ls -lh
6,4M SCAN140208-00-09-48.TIFF

$ time convit

real 0m11.123s
user 0m6.288s
sys 0m1.048s

$ ls -lh
27K SCAN140208-00-09-48.TIFF

Можно ли использовать двухпроцессорность, на этой операции? Сейчас в магазинах везде core 2 и прочее.

★★★

Как уже писали, ImageMagick - не unix-way, а комбайн. Он еще не умеет обрабатывать картинку, не засасывая ее целиком в память. Учи netpbm, тогда и работать будет быстрее, и памяти есть намного меньше, и многопроцессорность поддержит "на автомате" за счет bash и символа "|".

tifftopnm $w | pnmscalefixed 2 | ppmtopgm | pgmtopbm -threshold | pnmtotiff -g4 >$w.tmp

mv $w.tmp $w

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