.

Monday, September 19, 2011

Batch processing resize+autolevel+unsharp mask di Ubuntu Linux

Ada beberapa proses yang sering saya lakukan ketika saya mendownload photo dari kamera sebelum saya upload ke website, yaitu:

1. Unsharpen-mask, biar photo terlihat lebih tajam dan crispy.
2. Auto white balance
3. Resize sekitar 800 pixel (x or y).

Saya kesulitan ketika file yang akan di proses banyak, jadi lumayan makan waktu, jadi saya coba buat scriptnya agar otomatis.

Sebelumnya saya sudah pernah buat script menggunakan image magick untuk resize dan nambahin nama pada photo, tapi untuk white balance dan unsharp-masknya belum ada, setelah mencoba googling dapat beberapa refferensi soal melakukan banyak manipulasi dengan perintah pada terminal, bisa dilihat disini http://www.fmwconcepts.com/imagemagick/, untuk script autowhite balance sudah ada, untuk sharpen juga sudah ada, tapi waktu dicoba, prosesnya lumayan lama dan butuh resource agak gede, akhirnya saya coba menggunakan script-fu-nya gimp yang saya lihat ada tutorialnya disini http://www.gimp.org/tutorials/Basic_Batch/, saya menggunakan contoh script dari tutorial itu dan mengedit sedikit menambahkan autolevel, seperti berikut:


(define (iip-unsharp filename radius amount threshold)
(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(gimp-levels-auto drawable)
(plug-in-unsharp-mask RUN-NONINTERACTIVE image drawable radius amount threshold)
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
(gimp-image-delete image)))

Selanjutnya script diatas saya simpan di file iip-script.scm, lalu saya simpan di /home/iip/.gimp-2.6/scripts, kemudian saya memodifikasi file convert_image saya lama untuk menambahkan peritah ini :


#!/bin/bash

mkdir small
for ip in $(ls *.jpg *.JPG)
do
echo ------------------------------------------------
echo "$ip"
cp -f "$ip" "./small/$ip"
fn='gimp -i -b '"'"'(iip-unsharp ''"'"./small/${ip}"'"'' 0 5.0 0.5 0)'"'"" -b '(gimp-quit 0)'"
echo "$fn"
eval $fn
convert -scale $1 -quality $2 "./small/$ip" "./small/$ip"
done

Saya simpan script diatas ke file convert_gimp, lalu saya simpan di /usr/bin dan saya tambahkan +x pada file agar bisa di eksekusi sebagai script.

Untuk resize saya masih pakai imagemagick karena lebih simple, untuk running script diatas cukup menjalankan perintah:

convert_gimp 800 85

Perintah diatas dijalankan pada lokasi dimana photo yang akan diproses disimpan, parameter 800 artinya saya ingin melakukan scaling pada photo menjadi x=800 atau y=800 pixel, angka 85 adalah level kompresi dari photonya, kalau mau upload ke facebook sebaiknya pakai 100, karena facebook akan mengkompresi lagi photo anda sekitar 15%.

Demikian sekilat info...semoga manfaat.

Salam,

-iip-

No comments:

Showing screenfetch and install date on Manjaro

Here is the code: screenfetch head -n1 /var/log/pacman.log |awk -F '[' '{printf " \033[1...