Вам нужно написать цикл сценария следующим образом в Unix Imagemagick 6. Я поместил ваше входное изображение в каталог с именем test на моем рабочем столе.Я не уверен, почему вы использовали свои команды выше, но это может быть обрезано напрямую без составных слоев.Я сохраняю все обрезанные изображения в слоях временного файла MIFF, который я удаляю в конце.Основная идея состоит в том, чтобы проверить каждое обрезанное изображение, чтобы увидеть, является ли его альфа-канал чистым черным (или почти чистым черным, чтобы избежать крошечных очень прозрачных одиночных пикселей).
1) Если черный цвет находится в пределах небольшого порога, удалите альфа-канал со слоя miff, сохранив его в виде выходного изображения с черным номером.В противном случае просто сохраните слой как пронумерованное выходное изображение.
cd
cd desktop/test
convert image.png -background black -alpha background -crop 10x10% image.miff
num=`convert image.miff -format "%n\n" info: | head -n 1`
for ((i=0; i<num; i++)); do
trans_test=`convert image.miff[$i] -alpha extract -scale 1x1! -format "%[fx:mean<=0.0001?0:1]" info:`
echo "i=$i test=$trans_test"
if [ $trans_test -eq 0 ]; then
convert image.miff[$i] -alpha off result-$i.png
else
convert image.miff[$i] result-$i.png
fi
done
rm -f image.miff
cd
2) Если альфа-канал почти черный, пропустите этот слой
cd
cd desktop/test
convert image.png -background black -alpha background -crop 10x10% image.miff
num=`convert image.miff -format "%n\n" info: | head -n 1`
for ((i=0; i<num; i++)); do
trans_test=`convert image.miff[$i] -alpha extract -scale 1x1! -format "%[fx:mean<=0.0001?0:1]" info:`
echo "i=$i test=$trans_test"
if [ $trans_test -eq 1 ]; then
convert image.miff[$i] result-$i.png
fi
done
rm -f image.miff
cd
3) Если альфа-канал черный, пропустите его, но наберитерезультаты последовательно только для сохраненных.
cd
cd desktop/test
j=0
convert image.png -background black -alpha background -crop 10x10% image.miff
num=`convert image.miff -format "%n\n" info: | head -n 1`
for ((i=0; i<num; i++)); do
trans_test=`convert image.miff[$i] -alpha extract -scale 1x1! -format "%[fx:mean<=0.0001?0:1]" info:`
echo "i=$i test=$trans_test"
if [ $trans_test -eq 1 ]; then
convert image.miff[$i] result-$j.png
j=$((j+1))
fi
done
rm -f image.miff
cd
4) Если альфа-канал черный, пропустите его, но пронумеруйте результаты только для тех, которые находятся с ведущими нулями.
cd
cd desktop/test
j=0
convert image.png -background black -alpha background -crop 10x10% image.miff
num=`convert image.miff -format "%n\n" info: | head -n 1`
for ((i=0; i<num; i++)); do
trans_test=`convert image.miff[$i] -alpha extract -scale 1x1! -format "%[fx:mean<=0.0001?0:1]" info:`
echo "i=$i test=$trans_test"
if [ $trans_test -eq 1 ]; then
jj=`printf "%02d" $j`
convert image.miff[$i] result-$jj.png
j=$((j+1))
fi
done
rm -f image.miff
cd