#!/bin/bash
# Tampilkan pilihan zenity
mode=$(zenity --list --radiolist \
--title="Gabung Gambar" \
--text="Pilih mode penggabungan:" \
--column="" --column="Mode" \
TRUE "Horizontal" FALSE "Vertical")
# Batal
[ -z "$mode" ] && exit 0
# Lowercase
mode="${mode,,}" # jadi: horizontal atau vertical
# Ambil file
args=("$@")
tmpdir=$(mktemp -d)
dir="$(dirname "${args[-1]}")"
# Cari ukuran maksimum (tinggi untuk horizontal, lebar untuk vertical)
max_size=0
for img in "${args[@]}"; do
if [[ "$mode" == "horizontal" ]]; then
dim=$(identify -format "%h" "$img") || continue
else
dim=$(identify -format "%w" "$img") || continue
fi
[ "$dim" -gt "$max_size" ] && max_size=$dim
done
# Resize & pad ke ukuran seragam (rasio asli tetap)
resized=()
for img in "${args[@]}"; do
out="$tmpdir/$(basename "$img")"
read w h <<< $(identify -format "%w %h" "$img")
if [[ "$mode" == "horizontal" ]]; then
new_w=$(convert xc: -format "%[fx:round($w*$max_size/$h)]" info:)
magick "$img" -resize x"$max_size" \
-background none -gravity center -extent "${new_w}x$max_size" "$out"
else
new_h=$(convert xc: -format "%[fx:round($h*$max_size/$w)]" info:)
magick "$img" -resize "$max_size"x \
-background none -gravity center -extent "$max_size"x"${new_h}" "$out"
fi
resized+=("$out")
done
# Gabungkan
output="$dir/gabung-$mode.png"
if [[ "$mode" == "horizontal" ]]; then
magick "${resized[@]}" +append "$output"
else
magick "${resized[@]}" -append "$output"
fi
# Buka hasil
xdg-open "$(realpath "$output")" >/dev/null 2>&1 &
# Hapus temp
rm -r "$tmpdir"