projects
/
fgen.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Temp: fix bug with get_frame_id for frame starting with digit(s)
[fgen.git]
/
fgen.sh
diff --git
a/fgen.sh
b/fgen.sh
index
99bc69d
..
05cbb1d
100755
(executable)
--- a/
fgen.sh
+++ b/
fgen.sh
@@
-15,7
+15,7
@@
main_layer="Layer 558"
fps=8
debug=0
fps=8
debug=0
-
+trames=1
SED=sed
# -limit memory 5000mb -limit disk 5gb
SED=sed
# -limit memory 5000mb -limit disk 5gb
@@
-36,7
+36,7
@@
function log_dbg() {
# Arg1: layer
function get_size()
{
# Arg1: layer
function get_size()
{
- cat ${layers} | grep "${1}" | ${SED} "s/.*geometry:\([0-9]\+x[0-9]\+\).*/\1/g"
+ cat ${layers} | grep
-m 1
"${1}" | ${SED} "s/.*geometry:\([0-9]\+x[0-9]\+\).*/\1/g"
}
# Arg1: layer
}
# Arg1: layer
@@
-62,7
+62,7
@@
function get_label()
# Arg1: line
function get_frame_id()
{
# Arg1: line
function get_frame_id()
{
- frame=$(echo "${1}" | grep -e "label:[0-9]" | ${SED} "s/label:\([0-9]\+\),.*/\1/g")
+ frame=$(echo "${1}" | grep -e "label:[0-9]
\+,
" | ${SED} "s/label:\([0-9]\+\),.*/\1/g")
if [ x"${frame}" = x"" ]; then
echo ""
if [ x"${frame}" = x"" ]; then
echo ""
@@
-90,15
+90,19
@@
print_usage()
echo
echo "Options:"
echo " -d affiche les informations de debug"
echo
echo "Options:"
echo " -d affiche les informations de debug"
+ echo " -f ne regénère pas les trames, mais uniquement la séquence vidéo"
echo " -r nombre de trames par seconde (FPS)"
echo " -h affiche ce message d'aide"
}
echo " -r nombre de trames par seconde (FPS)"
echo " -h affiche ce message d'aide"
}
-while getopts "dhr:" flag ;do
+while getopts "dh
f
r:" flag ;do
case ${flag} in
d)
debug="1"
;;
case ${flag} in
d)
debug="1"
;;
+ f)
+ trames=0
+ ;;
r)
fps="${OPTARG}"
;;
r)
fps="${OPTARG}"
;;
@@
-151,52
+155,53
@@
for tool in convert composite identify; do
fi
done
fi
done
-identify ${IM_OPS} -verbose -format "label:%l,geometry:%g\n" ${src} > ${layers}
-
-# Ignore empty labels:
-${SED} -i -e /label:,.*/d ${layers}
+if [ ${trames} -eq 1 ]; then
+ identify ${IM_OPS} -verbose -format "label:%l,geometry:%g\n" ${src} > ${layers}
-
# Extract global frame size
:
-size=$(get_size "${main_layer}")
+
# Ignore empty labels
:
+ ${SED} -i -e /label:,.*/d ${layers}
-log_dbg "CANVAS SIZE=${size}"
+ # Extract global frame size:
+ size=$(get_size "${main_layer}")
-# Create background frame:
-convert -size ${size} xc:none ${dest}/background.png
+ log_dbg "CANVAS SIZE=${size}"
-
# Remove first line (Layer 558)
:
-${SED} -i -e '1d' ${layers}
+
# Create background frame
:
+ convert -size ${size} xc:none ${dest}/background.png
-# Will start at frame 2 at first loop iteration
-f=1
+ # Remove first line (Layer 558):
+ ${SED} -i -e '1d' ${layers}
-files=""
+ # Will start at frame 2 at first loop iteration
+ f=1
-while read l; do
- f=$((${f} + 1))
+ files=""
- label=$(get_label "${l}")
- p=$(get_pos "${l}")
- nf=$(get_frame_id "${l}")
+ while read l; do
+ f=$((${f} + 1))
- log_dbg "Couche ${f}"
- log_dbg " nom: ${label}"
- log_dbg " pos: ${p}"
+ label=$(get_label "${l}")
+ p=$(get_pos "${l}")
+ nf=$(get_frame_id "${l}")
- if is_skip_label "${label}"; then
- log_dbg " skip..."
- continue
- fi
+ log_dbg "Couche ${f}"
+ log_dbg " nom: ${label}"
+ log_dbg " pos: ${p}"
- files="${files} -page ${p} ${src}[${f}]"
+ if is_skip_label "${label}"; then
+ log_dbg " skip..."
+ continue
+ fi
- if [ x"${nf}" != x"" ]; then
- log_dbg "New frame ID: ${nf}"
- convert -colorspace sRGB -page +0+0 ${dest}/background.png ${files} -background none -layers merge ${dest}/f${nf}.png
- files=""
- fi
+ files="${files} -page ${p} ${src}[${f}]"
-done <${layers}
+ if [ x"${nf}" != x"" ]; then
+ log_dbg "New frame ID: ${nf}"
+ convert -colorspace sRGB -page +0+0 ${dest}/background.png ${files} -background none -layers merge ${dest}/f${nf}.png
+ files=""
+ fi
+ done <${layers}
+fi
if which ffmpeg 1> /dev/null 2>&1; then
# Conversion vidéo:
if which ffmpeg 1> /dev/null 2>&1; then
# Conversion vidéo: