cli open-source

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.

cli kode sumber saja · cli-tool· image-processing· python
CLI Tool Image Processing Python

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 dulupillow-heif mendaftarkan 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, pyoxipng mengoptimalkan 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 tqdm menunjukkan 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

  1. Kompresi massal — memproses satu direktori penuh dalam satu perintah, dengan folder masukan dan keluaran yang bisa diatur.
  2. Keluaran WebP — lossy pada quality=82, method=6 sebagai bawaan, atau near-lossless untuk hasil pixel-perfect dengan ukuran lebih besar.
  3. Keluaran PNG — mode quantize menyusutkan ke palet 2–256 warna (sekitar 60–70% lebih kecil), atau mode lossless yang menjaga piksel tetap identik.
  4. Penyusutan otomatis — gambar yang lebih lebar dari 1920 px diubah ukurannya secara proporsional memakai filter LANCZOS.
  5. Pembuangan metadata — EXIF dihapus untuk menghemat byte, setelah orientasinya diterapkan.
  6. 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
dimulai 24 May 2026 · diperbarui 29 Aug 2026