Pengompres Gambar Batch
Alat baris perintah yang mengompres kumpulan foto ke WebP atau PNG, membuang metadata EXIF, dan menyusutkan gambar yang terlalu besar — dibuat untuk menekan ukuran aset situs statis.
Perkakas baris perintah untuk kompresi gambar massal — satu berkas Python tunggal yang mengubah seluruh folder foto beresolusi tinggi menjadi WebP atau PNG dengan ukuran seminimal mungkin, dibuat untuk menyiapkan aset galeri sebelum di-host secara statis.
Sorotan
- Satu skrip, tanpa penyiapan — satu berkas mandiri dengan empat dependensi, bisa dijalankan dari baris perintah mana pun tanpa kerangka project.
- Foto iPhone langsung jalan tanpa konversi lebih dulu —
pillow-heifmendaftarkan HEIC dan HEIF berdampingan dengan JPG, PNG, BMP, TIFF, GIF, dan WebP, sehingga format yang benar-benar dihasilkan ponsel menjadi masukan kelas satu, bukan sumber error. - Foto potret berhenti keluar miring — orientasi EXIF diterapkan ke piksel sebelum proses enkode, karena tag orientasi ikut terbuang bersama metadata lainnya dan apa pun yang mengandalkannya akan terputar diam-diam.
- Tahap kompresi kedua berbasis Rust untuk PNG — setelah Pillow mengenkode,
pyoxipngmengoptimalkan ulang berkasnya. Mode zopfli opsional memeras 5–10% lagi dengan waktu jalan 10–50× lipat, dan itu didokumentasikan sebagai pertukaran, bukan diaktifkan sebagai bawaan. - Dua format keluaran dalam satu jalan — WebP dan PNG dapat dihasilkan sekaligus ke subfolder terpisah, dan itulah yang membuat perbandingan A/B praktis, bukan butuh satu putaran penuh kedua.
- Satu berkas rusak tidak menghentikan pekerjaan — penanganan error per gambar menjaga proses tetap berjalan, dan bilah kemajuan
tqdmmenunjukkan posisinya. - Panduan pemilihan format menjadi bagian perkakasnya — codec lossy VP8 milik WebP bisa 10–50× lebih kecil pada foto dengan ribuan warna, sementara logo datar di bawah 100 warna sering lebih baik ditangani kuantisasi PNG. README-nya menyebutkan kapan tiap pilihan menang alih-alih mengandaikan WebP selalu unggul.
Fitur Utama
- Kompresi massal — memproses satu direktori penuh dalam satu perintah, dengan folder masukan dan keluaran yang bisa diatur.
- Keluaran WebP — lossy pada
quality=82, method=6sebagai bawaan, atau near-lossless untuk hasil pixel-perfect dengan ukuran lebih besar. - Keluaran PNG — mode
quantizemenyusutkan ke palet 2–256 warna (sekitar 60–70% lebih kecil), atau modelosslessyang menjaga piksel tetap identik. - Penyusutan otomatis — gambar yang lebih lebar dari 1920 px diubah ukurannya secara proporsional memakai filter LANCZOS.
- Pembuangan metadata — EXIF dihapus untuk menghemat byte, setelah orientasinya diterapkan.
- Sebelas flag CLI — format, kualitas, lebar maksimum, mode PNG, ukuran palet, zopfli beserta jumlah iterasinya, near-lossless, serta folder masukan dan keluaran semuanya bisa ditimpa.
Tech Stack
- Python 3.9+
- Pillow ≥ 10 (dekode, ubah ukuran, enkode)
- pillow-heif ≥ 0.16 (masukan HEIC / HEIF)
- pyoxipng ≥ 9 (optimasi ulang PNG berbasis Rust, zopfli opsional)
- tqdm ≥ 4.65 (pelaporan kemajuan)
Status & Kematangan
Selesai dan stabil — perkakas mandiri yang perilakunya deterministik dan mudah diverifikasi langsung dengan memeriksa ukuran keluarannya. Tidak ada test otomatis, dan itu keadaan sebenarnya: pertanyaan kebenaran di sini bersifat visual dan dimensional, bukan logis. Dua commit yang terbentang dua bulan mencerminkan perkakas yang ditulis, dipakai, lalu hanya disentuh lagi ketika ada format masukan baru yang dibutuhkan.
Metrik Terukur
| Commit | 2 |
| Rentang Tanggal | 24 Mei 2026 – 22 Jul 2026 |
| Baris kode | 859 |
| Test otomatis | tidak ada |