Filed underPanduan Praktik Developeron•3 menit baca

Optimasi Gambar: Ubah & Kompres PNG, JPG ke WebP di Node.js

Era digital telah menghadirkan gambar ke dalam pengalaman penjelajahan kita. Namun, kendalanya adalah gambar-gambar ini seringkali memakan bandwidth yang cukup ...

Era digital telah menghadirkan gambar ke dalam pengalaman penjelajahan kita. Namun, kendalanya adalah gambar-gambar ini seringkali memakan bandwidth yang cukup besar, mempengaruhi kinerja situs web. Kita dapat mengatasi hal ini dengan mengurangi ukuran gambar melalui proses yang disebut Optimasi Gambar. Dalam artikel ini, kita akan menjelajahi bagaimana mengonversi file gambar seperti PNG dan JPG menjadi WebP dan mengompresnya menggunakan Node.js.

Mengapa Memilih WebP?

WebP, format gambar modern yang dikembangkan oleh Google, menyediakan kompresi yang superior dengan dan tanpa kehilangan kualitas gambar. Dengan mengonversi file PNG dan JPG menjadi WebP, kita dapat mencapai ukuran file yang lebih kecil tanpa mengorbankan kualitas gambar, yang pada akhirnya membuat situs web kita lebih cepat dimuat.

Persiapan Node.js

Sebelum kita memulai proses konversi, pastikan Node.js sudah terinstal. Jika belum, unduh dan instal sesuai dengan sistem operasi Anda.

Menginstal Modul yang Diperlukan

Kita akan menggunakan dua paket npm: sharp untuk konversi gambar, dan imagemin-webp untuk kompresi gambar.

npm install sharp imagemin imagemin-webp

Mengonversi Gambar ke WebP

Mari kita gunakan modul sharp untuk mengonversi gambar PNG atau JPG menjadi WebP. Hal ini dilakukan dengan membaca file input dan mengubahnya menjadi format WebP.

const sharp = require('sharp');

sharp('input.png')
  .webp()
  .toFile('output.webp')
  .then(() => console.log('Konversi gambar selesai.'))
  .catch(err => console.error(err));

Mengompres Gambar WebP

Selanjutnya, mari kita kompres gambar WebP yang telah dikonversi menggunakan modul imagemin-webp.

const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');

(async () => {
  await imagemin(['output.webp'], {
    destination: 'compressed_images',
    plugins: [
      imageminWebp({quality: 50})
    ]
  });

  console.log('Kompresi gambar selesai.');
})();

Kode Lengkap

const sharp = require('sharp');
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');

sharp('input.png')
  .webp()
  .toFile('output.webp')
  .then(() => {
    (async () => {
      await imagemin(['output.webp'], {
        destination: 'compressed_images',
        plugins: [
          imageminWebp({quality: 50})
        ]
      });

      console.log('Konversi dan kompresi gambar selesai.');
    })();
  })
  .catch(err => console.error(err));

Skrip lengkap ini akan mengonversi gambar Anda ke format WebP dan mengompresnya.

Kesimpulan

Demikianlah cara efisien untuk mengonversi dan mengompres PNG dan JPG menjadi WebP di Node.js. Sekarang Anda dapat mengoptimalkan gambar-gambar Anda, mempercepat waktu muat situs web, dan memberikan pengalaman pengguna yang lebih baik. Dengan sedikit latihan, langkah-langkah ini akan menjadi seperti naluri kedua.

Pertanyaan Umum

  1. Mengapa harus menggunakan WebP daripada PNG atau JPG? WebP menawarkan kompresi yang lebih baik, mengurangi ukuran file tanpa kehilangan kualitas gambar yang signifikan.

  2. Mengapa kita perlu mengompres gambar? Pengompresan gambar mengurangi ukuran file mereka, yang dapat secara drastis meningkatkan waktu muat situs web dan menghemat bandwidth.

  3. Apakah saya bisa menggunakan bahasa pemrograman lain untuk tugas ini? Ya, bahasa pemrograman lain seperti Python, Java, dll., juga memiliki pustaka untuk konversi dan kompresi gambar. Namun, tutorial ini berfokus pada Node.js.

  4. Apa yang terjadi jika proses konversi atau kompresi gagal? Pastikan Node.js dan semua modul yang diperlukan terinstal dengan benar. Jika masalah tetap berlanjut, kemungkinan masalah ada pada gambar itu sendiri.

  5. Apakah saya bisa mengatur tingkat kompresi? Ya, plugin imagemin-webp memungkinkan Anda mengatur parameter kualitas untuk mengontrol tingkat kompresi.

Kembali ke semua artikelBeranda