Pernahkah Anda merasa loading blog atau website Anda terasa sangat lambat? Salah satu penyebab utamanya biasanya adalah ukuran gambar (JPG/PNG) yang terlalu besar dan belum dioptimasi. Solusi terbaik saat ini yang disarankan oleh Google PageSpeed adalah menggunakan format gambar generasi baru: WebP.
Masalahnya, bagaimana jika kita punya puluhan bahkan ratusan gambar yang harus dikompres dan diubah ke WebP? Melakukannya satu per satu secara manual tentu sangat melelahkan dan membuang waktu. Nah, di sinilah kehebatan Python beraksi!
Pada artikel kali ini, PintarApp Script akan membagikan sebuah tool (skrip) otomatisasi Python sederhana yang bisa mengubah ratusan gambar Anda menjadi format WebP berukuran super kecil, hanya dengan satu kali klik.
Persiapan Sebelum Memulai
Sebelum kita menjalankan skripnya, pastikan komputer atau laptop Anda sudah memenuhi dua syarat mudah berikut:
- Sudah menginstal Python (bisa diunduh dari situs resmi python.org).
- Sudah menginstal library pengolah gambar bernama Pillow. Caranya, buka Command Prompt (CMD) atau Terminal, lalu ketikkan perintah berikut dan tekan Enter:
pip install Pillow
Source Code Script Auto Compress WebP
Jika persiapan di atas sudah selesai, silakan salin skrip Python di bawah ini dan simpan di komputer Anda dengan nama file auto_compress_webp.py.
import os
from PIL import Image
# ==============================================================================
# SCRIPT AUTOMATION: AUTO COMPRESS And CONVERT TO WEBP
# Dibuat khusus untuk PintarApp Script (script.pintarapp.com)
# Fungsi: Mengubah semua gambar di dalam folder menjadi format WebP berukuran kecil.
# ==============================================================================
def compress_to_webp(input_folder, output_folder, quality=80, max_width=800):
"""
Mengompresi gambar dan mengonversinya ke format WebP.
"""
# Buat folder output jika belum ada
if not os.path.exists(output_folder):
os.makedirs(output_folder)
print(f"[+] Membuat folder output: {output_folder}")
# Daftar format gambar yang didukung
supported_formats = ('.png', '.jpg', '.jpeg', '.bmp')
# Hitung jumlah file yang diproses
processed_count = 0
print("-" * 50)
print("Mulai memproses gambar...")
print("-" * 50)
for filename in os.listdir(input_folder):
if filename.lower().endswith(supported_formats):
file_path = os.path.join(input_folder, filename)
try:
# Buka gambar menggunakan Pillow
img = Image.open(file_path)
# Konversi mode RGBA (PNG dengan transparansi) ke RGB sebelum kompresi
# (opsional jika ingin WebP transparan, biarkan RGBA, tapi RGB lebih kecil)
if img.mode in ("RGBA", "P"):
img = img.convert("RGB")
# Resize gambar jika lebarnya melebihi max_width
if img.width > max_width:
ratio = max_width / float(img.width)
new_height = int((float(img.height) * float(ratio)))
img = img.resize((max_width, new_height), Image.Resampling.LANCZOS)
# Buat nama file baru dengan ekstensi .webp
new_filename = os.path.splitext(filename)[0] + '.webp'
output_path = os.path.join(output_folder, new_filename)
# Simpan dengan kompresi WebP
img.save(output_path, 'webp', optimize=True, quality=quality)
# Dapatkan ukuran file sebelum dan sesudah
old_size = os.path.getsize(file_path) / 1024 # dalam KB
new_size = os.path.getsize(output_path) / 1024 # dalam KB
print(f"[SUKSES] {filename}")
print(f" => Ukuran: {old_size:.1f} KB turun menjadi {new_size:.1f} KB")
processed_count += 1
except Exception as e:
print(f"[ERROR] Gagal memproses {filename}: {e}")
print("-" * 50)
print(f"Selesai! Berhasil mengompresi {processed_count} gambar.")
print("-" * 50)
if __name__ == "__main__":
# Tentukan folder input (tempat gambar asli) dan output (hasil WebP)
FOLDER_ASLI = "gambar_mentah"
FOLDER_HASIL = "hasil_webp"
# Pastikan folder input ada
if not os.path.exists(FOLDER_ASLI):
os.makedirs(FOLDER_ASLI)
print(f"Folder '{FOLDER_ASLI}' belum ada. Silakan buat dan masukkan gambar ke dalamnya.")
else:
# Jalankan fungsi kompresi
# Anda bisa mengubah kualitas (0-100) dan batas maksimal lebar gambar (max_width)
compress_to_webp(input_folder=FOLDER_ASLI, output_folder=FOLDER_HASIL, quality=75, max_width=720)
Cara Menggunakan Script
Penggunaannya sangat mudah, bahkan bagi Anda yang belum pernah menyentuh coding sekalipun:
- Buka Terminal/CMD, arahkan ke folder tempat Anda menyimpan
auto_compress_webp.py. - Jalankan skrip untuk pertama kalinya dengan perintah:
python auto_compress_webp.py - Saat pertama kali dijalankan, skrip akan otomatis membuat dua folder baru di direktori yang sama, yaitu folder gambar_mentah dan hasil_webp.
- Pindahkan semua foto berukuran besar (JPG/PNG) yang ingin Anda kompres ke dalam folder gambar_mentah.
- Jalankan kembali skripnya (
python auto_compress_webp.py). - Selesai! Skrip akan berjalan memproses gambar Anda satu per satu. Silakan buka folder hasil_webp untuk melihat gambar Anda yang ukurannya sudah menyusut drastis.
Penyesuaian Skrip (Kustomisasi)
Skrip ini dirancang secara dinamis. Anda bisa mengatur tingkat kompresi dan lebar maksimal gambar sesuai kebutuhan blog Anda. Silakan cari baris paling bawah pada skrip:
compress_to_webp(input_folder=FOLDER_ASLI, output_folder=FOLDER_HASIL, quality=75, max_width=720)
- quality=75 : Menentukan kualitas gambar (rentang 0-100). Angka 75 adalah titik keseimbangan terbaik antara ukuran file kecil dan gambar yang tetap tajam.
- max_width=720 : Jika gambar asli Anda lebarnya 2000px, skrip akan otomatis mengecilkannya menjadi lebar 720px secara proporsional. Anda bisa mengubahnya menjadi 800, 1024, atau sesuai lebar artikel blog Anda.
Selamat mencoba! Dengan mengubah seluruh gambar artikel ke dalam format WebP menggunakan tool ini, bersiaplah melihat skor Google PageSpeed blog Anda meroket menjadi hijau. Jangan lupa tinggalkan komentar di bawah jika ada kendala saat menjalankan skripnya.
