Работаю тут с imagemagick ...

Надо бы запомнить один баг..


скачала скрипты с эффектами, в них есть такие строки:

# read input image
/usr/local/bin/convert -quiet -regard-warnings "$infile" +repage $setcspace $dir/tmpI.mpc ||
errMsg  "--- FILE $infile DOES NOT EXIST OR IS NOT AN ORDINARY FILE, NOT READABLE OR HAS ZERO SIZE  ---"

.....

# get colorspace and type
# colorspace swapped at IM 6.7.5.5, but not properly fixed until 6.7.6.6
# before swap verbose info reported colorspace=RGB after colorspace=sRGB
# not all formats report grayscale for colorspace (gif, tiff, jpg do not), but type will be grayscale
#colorspace=`/usr/local/bin/identify -ping -verbose $dir/tmpI.mpc | sed -n 's/^.*Colorspace: \([^ ]*\).*$/\1/p'`
#colorspace=`/usr/local/bin/identify -verbose $dir/tmpI.mpc | sed -n 's/^.*Colorspace: \([^ ]*\).*$/\1/p'`
colorspace=`/usr/local/bin/identify -format %[colorspace]  $dir/tmpI.mpc`
#echo "colorspace ==== $colorspace"
if [ "$colorspace" != "RGB" -a "$colorspace" != "sRGB" -a "$colorspace" != "Gray" ]; then
errMsg "--- FILE $infile MUST BE RGB, sRGB or GRAY ---"
fi

Выяснила, что здесь выражение
colorspace=`/usr/local/bin/identify -ping -verbose $dir/tmpI.mpc | sed -n 's/^.*Colorspace: \([^ ]*\).*$/\1/p'` 
регулярка и она с некоторыми файлами вызывает ошибку типа

identify: free(): invalid next size (fast)

Кто видел, тот поймет.. вкратце эта ошибка что памяти не хватает...
То самое выражение зачем-то использует регулярку, корее оптому что в старой версии не было возможности получить иначе colorspase У меня версия по новее так что заменила на
colorspace=`/usr/local/bin/identify -format %[colorspace]  $dir/tmpI.mpc`

Комментарии

Популярные сообщения