Skip to content

Instantly share code, notes, and snippets.

@irfnrdh
Last active March 25, 2025 05:01
Show Gist options
  • Save irfnrdh/ed3f5db0392b785e1a6a77a331473d35 to your computer and use it in GitHub Desktop.
Save irfnrdh/ed3f5db0392b785e1a6a77a331473d35 to your computer and use it in GitHub Desktop.
Cetak 5R Photo dalam Folder dibuat dalam 1 Kertas 2 Foto ukuran 5R atau 5 inch x 7 inch. Pastikan imagemagicknya ter install
#!/bin/bash
# Direktori tempat gambar-gambar disimpan
INPUT_DIR="input" # Ganti dengan direktori input gambar
OUTPUT_DIR="output" # Ganti dengan direktori output untuk gambar yang sudah diubah
# Membuat direktori output jika belum ada
mkdir -p "$OUTPUT_DIR"
# Ukuran 5R dalam piksel (untuk resolusi 300 DPI)
WIDTH=1500 # 5 inci = 1500 piksel (300 DPI)
HEIGHT=2100 # 7 inci = 2100 piksel (300 DPI)
# Ukuran A4 dalam piksel (untuk resolusi 300 DPI)
A4_WIDTH=3508 # 11.69 inci = 3508 piksel (300 DPI)
A4_HEIGHT=2550 # 8.27 inci = 2550 piksel (300 DPI)
# Padding di sekitar gambar dan kertas (dalam piksel)
PADDING=150 # 0.5 inci padding (300 DPI)
GAP=150 # 0.5 inci gap di antara gambar (300 DPI)
# Posisi gambar pertama dan kedua
X_OFFSET_LEFT=$(( (A4_WIDTH - WIDTH - GAP - WIDTH) / 2 )) # Posisi gambar pertama (kiri)
Y_OFFSET=$(( (A4_HEIGHT - HEIGHT) / 2 )) # Posisi vertikal untuk kedua gambar (ditengah)
X_OFFSET_RIGHT=$((X_OFFSET_LEFT + WIDTH + GAP)) # Posisi gambar kedua (kanan)
# Menyiapkan array untuk gambar-gambar yang ada
IMAGES=("$INPUT_DIR"/*.{jpg,jpeg,png})
TOTAL_IMAGES=${#IMAGES[@]}
# Array untuk menampung nama file yang akan dijadikan PDF
PDF_FILES=()
# Proses gambar per pasangan (foto 1 dan foto 2 untuk satu kertas)
for ((i=0; i<TOTAL_IMAGES; i+=2)); do
# Ambil dua gambar untuk setiap kertas
IMAGE1="${IMAGES[$i]}"
IMAGE2="${IMAGES[$((i+1))]}"
# Nama file tanpa ekstensi
BASENAME1=$(basename "$IMAGE1")
BASENAME2=$(basename "$IMAGE2")
FILENAME="${BASENAME1%.*}_${BASENAME2%.*}"
# Membuat gambar 5R dari setiap foto
convert "$IMAGE1" -resize ${WIDTH}x${HEIGHT}\! "$OUTPUT_DIR/${FILENAME}_5R_1.jpg"
convert "$IMAGE2" -resize ${WIDTH}x${HEIGHT}\! "$OUTPUT_DIR/${FILENAME}_5R_2.jpg"
# Menempatkan dua gambar pada satu halaman A4 dengan padding dan gap, orientasi landscape
convert -size ${A4_WIDTH}x${A4_HEIGHT} xc:white \
"$OUTPUT_DIR/${FILENAME}_5R_1.jpg" -geometry +${X_OFFSET_LEFT}+${Y_OFFSET} -composite \
"$OUTPUT_DIR/${FILENAME}_5R_2.jpg" -geometry +${X_OFFSET_RIGHT}+${Y_OFFSET} -composite \
"$OUTPUT_DIR/${FILENAME}_A4_landscape_with_gap.jpg"
# Menambahkan penamaan file yang diurutkan
mv "$OUTPUT_DIR/${FILENAME}_A4_landscape_with_gap.jpg" "$OUTPUT_DIR/Page_$((i / 2 + 1)).jpg"
# Menambahkan file gambar ke array PDF
PDF_FILES+=("$OUTPUT_DIR/Page_$((i / 2 + 1)).jpg")
done
# Menggabungkan semua gambar menjadi satu PDF
convert "${PDF_FILES[@]}" "$OUTPUT_DIR/output.pdf"
echo "Proses selesai! PDF siap untuk dicetak: $OUTPUT_DIR/output.pdf"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment