Pendahuluan
Halo! Kalau kamu punya ratusan foto dalam satu folder dan ingin mengecilkan ukurannya sekaligus (misal buat kebutuhan web selebar 800px) tapi tidak mau ngerusak foto aslinya, ImageMagick adalah solusinya. 🚀
🚨 Catatan Penting:
Jangan asal pakai perintah
Jangan asal pakai perintah
mogrify tanpa opsi -path ya, karena secara default dia bakal menimpa file asli kamu. Selalu gunakan -path atau gunakan loop manual biar aman.Prasyarat
- Pastikan ImageMagick sudah terpasang (cek dengan
magick -version). - Bisa buka Terminal (Linux/macOS) atau PowerShell (Windows).
- Siapkan folder tujuan sebelum eksekusi.
Metode 1 — Cepat (Linux/macOS)
Paling praktis buat file yang numpuk di satu folder. Kita pakai mogrify dengan folder tujuan.
# Buat folder tujuan
mkdir -p ../resized
# Resize semua JPG jadi lebar 800px, hapus metadata, kualitas 85%
magick mogrify -path ../resized -resize 800x -strip -quality 85 *.jpgHasilnya bakal masuk ke folder ../resized, file asli kamu tetap aman di tempatnya.
Metode 2 — Loop Manual (Fleksibel)
Kalau kamu ingin lebih teliti, misalnya sambil ganti format ke PNG, pakai cara loop ini:
mkdir -p ../resized
for f in *.jpg; do
magick "$f" -resize 800x -strip -quality 85 "../resized/${f%.*}.jpg"
doneMetode 3 — Rekursif (Masuk ke Subfolder)
Apabila struktur direktori memiliki beberapa subfolder di dalamnya, konfigurasi skrip ini dirancang untuk memproses penyesuaian ukuran gambar tanpa mengubah susunan folder asal.
#!/bin/bash
OUTDIR="resized"
mkdir -p "$OUTDIR"
find . -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) -print0 |
while IFS= read -r -d '' file; do
rel="${file#./}"
dst="$OUTDIR/$(dirname "$rel")"
mkdir -p "$dst"
magick "$file" -resize 800x -strip -quality 85 "$dst/$(basename "$rel")"
doneMetode 4 — Windows PowerShell
Buat pengguna Windows, kamu bisa pakai perintah PowerShell yang keren ini:
$src = "C:\Folder\FotoAsli"
$dst = "C:\Folder\FotoHasil"
Get-ChildItem -Path $src -Recurse -File -Include *.jpg,*.png | ForEach-Object {
$rel = $_.FullName.Substring($src.Length).TrimStart('\')
$outDir = Join-Path $dst (Split-Path $rel -Parent)
New-Item -ItemType Directory -Path $outDir -Force | Out-Null
magick $_.FullName -resize 800x -strip -quality 85 (Join-Path $outDir $_.Name)
}Tips Jitu
- Gunakan
-stripuntuk membuang data EXIF biar file makin ringan. - Kualitas
-quality 85biasanya sudah sangat cukup buat web. - Bungkus nama file dengan tanda kutip
"$file"kalau nama fotonya ada spasinya.