Bersih-bersih Berkas SVG dengan Scour

Jika kita bekerja dengan Inkscape dengan melakukan terlalu banyak perubahan, banyak mengimport berkas dari luar, maka berkas kerja kita sedikit demi sedikit akan penuh dengan hal-hal yang sudah tidak kita butuhkan lagi, membuat ukurannya membengkak.

Contoh Kasus

Ukuran-ukuran yang diujicobakan dalam tulisan ini mungkin berbeda hasilnya dengan milik pembaca, tergantung pada beberapa hal (perangkat lunak, konfigurasi, filesystem). Penulis menggunakan Inkscape 0.48.4 r9939 dan Scour 0.27.

Misalnya, dari sebuah berkas baru, kita membuat bentuk kotak, dan memberi warna gradient dari hitam ke putih menggunakan linear gradient bawaan inkscape yang sudah ada (linearGradient4449).

tes
Linear Gradient bawaan Inkscape, dari hitam ke putih.

Jika berkas yang sederhana ini disimpan, kita akan mendapatkan berkas yang hanya berukuran 2.3 KB.

http://upload.wikimedia.org/wikipedia/commons/7/76/Mozilla_Firefox_logo_2013.svg

Tautan di atas adalah logo peramban web Firefox dengan ukuran 237.2 KB, yang menyimpan banyak konfigurasi gradient untuk berbagai warna.

Kita coba mengimport berkas tersebut (baik dengan drag-&-drop, copy paste, atau pun melalui menu import) dan menyimpan hasilnya. Ukurannya menjadi 268.5 KB.

tes1
Ditambahkan logo peramban web Firefox.

Jika kita coba menghapus keseluruhan logo Firefox dan menyisakan gambar kotak saja, kemudian disimpan, maka berkasnya akan menjadi berukuran 32.4 KB.

Mengapa tidak menjadi 2.3 KB, seperti ukuran semula? Karena Inkscape masih menyimpan berbagai data dari gambar logo Firefox yang tadi. Salah satu data tersebut adalah konfigurasi berbagai warna yang digunakan di gambar logo Firefox, seperti yang dapat dilihat di bawah ini.

tes2
Warna gradient bawaan dari gambar logo peramban web Firefox.

Scour, Si Tukang bersih-bersih

Scour (http://codedread.com/scour/) adalah skrip python yang dapat membersihkan berkas SVG dari data-data yang tidak kita perlukan lagi. Menggunakan Scour cukup mudah, tinggal diunduh dan dijalankan langsung dengan python. Dengan asumsi skrip ini berada pada direktori yang sama dengan berkas SVG,

$ python scour.py < berkas_asli.svg > berkas_baru.svg

Hasil uji coba saya untuk berkas yang berukuran 32.4 KB tadi adalah sangat fantastis, menjadi berukuran hanya 1.1 KB, jauh lebih kecil dari kondisi ketika berkas tersebut belum ditambahkan apa-apa. Template gradient-nya pun langsung  hanya menyisakan yang dibutuhkan saja, warna-warna gradient khas Firefox sudah hilang.

Scour bahkan bisa lebih angresif dengan menambahkan beberapa opsi.

$ python scour.py --enable-comment-stripping --enable-id-stripping --remove-metadata < berkas_asli.svg > berkas_baru.svg

Jika perintah diatas dijalankan untuk berkas tadi maka akan menghasilkan ukuran yang jauh lebih kecil lagi, hanya 707 B! Saya pernah mengerjakan sebuah proyek yang berkasnya mencapai ukuran 1.6MB. Setelah dioptimasi dengan Scour, ukurannya menjadi jauh lebih kecil, hanya 73KB.

Misalnya anda punya berkas banyak sekali dan ingin mengoptimasi semuanya sekaligus, jangan khawatir. Dengan fleksibilitas bash, kita bisa membuat skrip perulangan untuk kebutuhan ini.

#!/bin/bash
mkdir scour-output
SAVEIF=$IFS
IFS=$(echo -en "\n\b")

for file in $(ls *svg)
do
  name=${file%%.svg}
  python scour.py --enable-comment-stripping --enable-id-stripping --remove-metadata < $name.svg > scour-output/$name.svg

done

Sebelum anda memberikan hasil karya dalam bentuk SVG ke orang lain / publik, atau menggunggahnya dalam surat elektronik atau media apa saja, pertimbangkan untuk mengoptimasi berkas anda dengan Scour, baik untuk menghemat ruang maupun bandwith.

The following two tabs change content below.

Latest posts by piko (see all)

Leave a Reply

Your email address will not be published. Required fields are marked *