diff --git a/img-fft-resynth.sh b/img-fft-resynth.sh
index 8d2167859a2727df5ec409aef085939bcb9c601f..1e6294ae89e9251b00e9524f7f85e4f2a44c61d7 100644
--- a/img-fft-resynth.sh
+++ b/img-fft-resynth.sh
@@ -36,8 +36,8 @@ tmpdir=
ifile=
ofile=
depth=32
-width=
-height=
+ow=
+oh=
bands=
if [ -n "$*" ]; then
while true; do
@@ -51,13 +51,13 @@ if [ -n "$*" ]; then
--width )
eval "${check_arg_missing}; ${check_arg_num}"
if [ $1 -gt 0 ] ; then
- width=$1
+ ow=$1
fi;;
--height )
eval "${check_arg_missing}; ${check_arg_num}"
if [ $1 -gt 0 ] ; then
- height=$1
+ oh=$1
fi;;
--depth )
@@ -99,6 +99,8 @@ else
exit
fi
+# Pick actual tmpdir
+
for d in "$tmpdir" "${XDG_RUNTIME_DIR}" "/tmp" "~" ; do
d=$( realpath "$d" 2>/dev/null ) || continue
[ -d "$d" ] || continue
@@ -106,61 +108,69 @@ for d in "$tmpdir" "${XDG_RUNTIME_DIR}" "/tmp" "~" ; do
tmpdir="$( realpath "$d/$self" )"
break
done
+rm -rf "${tmpdir}"/*
+
+IM_FLAGS="-depth $depth -define quantum:format=floating-point -alpha off"
-IM_FLAGS="-depth ${depth} -define quantum:format=floating-point -alpha off"
+# Analyzing
-echo New width: $width
-echo New height: $height
+isize=$( identify "$ifile" | cut -f3 -d' ' )
+iw=$( cut -f1 -dx <<< $isize )
+ih=$( cut -f2 -dx <<< $isize )
+
+if [ $((ow)) -eq 0 -a $((oh)) -eq 0 ]; then
+ ow=$iw
+ oh=$ih
+elif [ $((ow)) -eq 0 ]; then
+ ow=$(( oh * iw / ih ))
+elif [ $((oh)) -eq 0 ]; then
+ oh=$(( ow * ih / iw ))
+fi
+geom="${ow}x${oh}+0+0"
+
+echo New width: $ow
+echo New height: $oh
echo Bands: $bands
echo Color depth: $depth
echo Input: $ifile
echo Output: $ofile
echo Tmpdir: $tmpdir
-# Analyzing
-if [ -n "${width}" ] && [ -n "${height}" ]; then
- geom="${width}x${height}+0+0"
-else
- geom=$( identify "${ifile}" | cut -f4 -d' ' )
-fi
+# Prepare source
-# FFT
echo Processing ${ifile}
if [ "${ifile%.miff}" != "${ifile}" ] || [ "${ifile%.mif}" != "${ifile}" ] ; then
cp "${ifile}" ${tmpdir}/src.miff
else
convert ${ifile} ${IM_FLAGS} ${tmpdir}/src.miff
fi
-convert ${tmpdir}/src.miff -fft +adjoin ${tmpdir}/fft.miff
-# Extract source size
-isize=$( identify ${tmpdir}/src.miff | cut -f3 -d' ' )
-iw=$( cut -f1 -dx <<< ${isize} )
-ih=$( cut -f2 -dx <<< ${isize} )
+# FFT
+
+convert ${tmpdir}/src.miff -fft +adjoin ${tmpdir}/fft.miff
ifft_size=$( identify ${tmpdir}/fft-0.miff | cut -f3 -d' ' | cut -f1 -dx )
-#rm ${tmpdir}/src.miff
# Find transform parameters
echo 'Find transform parameters'
rez=( $( bc <<< "
-scale=${bc_prec}
-if (${width} / ${height} > ${iw} / ${ih})
- sc = ${width} / ${iw} else sc = ${height} / ${ih}
+ scale=$bc_prec
+ if ($ow / $oh > $iw / $ih)
+ sc = $ow / $iw else sc = $oh / $ih
+
+ scale=0
-scale=0
+ (b_incr = (sc > 1)) /* ret 0 */
+ ffts = max ($ow, $oh)
-(b_incr = (sc > 1)) /* ret 0 */
-ffts = max (${width}, ${height})
-ffts + ffts % 2 /* ret 1 */
-abs(ffts - ${ifft_size}) / 2 /* ret 2 */
+ ffts + ffts % 2 /* ret 1 */
+ abs(ffts - $ifft_size) / 2 /* ret 2 */
" ) )
b_incr=${rez[0]}
offt_size=${rez[1]}
d=${rez[2]}
echo 'Done (Find transform parameters)'
-echo isize $isize osize ${width}x${height} ifft_size $ifft_size offt_size $offt_size d $d
-#exit #DEBUG
+echo isize $isize osize ${ow}x${oh} ifft_size $ifft_size offt_size $offt_size d $d
# Resizing
if [ $b_incr == 1 ]