Pazar, Mart 12, 2006

GIMP için Python scripti

Merhaba,
Bugün itibari ile bloguma ilk teknik makalemi yazıyorum. e-Turkey.net için uğraşırken çok anlamasam da kendimi imaj editleme işinde buldum. Genel olarak GIMP üzerinde imajlara yaptığım işlemler:
* Tools->Color Tools->Levels tan auto yu seçmek.
* Sonra imajı uzun tarafı 600 piksel olacak şekilde
Image->Scale Image ile seçerek uzun kenara 600 yazarak düzeltmek.
* İmaj küçülünce bulanıklaştığı için 30 değeri ile(genellikle) Filters->Enhance->Sharpen ı çalıştırmak oluyordu.
Aralarda sonuca göre başka değerler verebiliyor veya başka işlemler yapabiliyordum ama büyük çoğunluk için bu işlemler yetiyordu.
Bu işlemleri çok fazla tekrarladığım için daha önce hiç yazmadığım bir dil olan pythonu kullarak bir script yazmaya karar verdim:

#!/usr/bin/python
import math
from gimpfu import *

def calc_aspect_dim(dim, orig_dim, other_dim):
return int(float(dim) / orig_dim * other_dim)

def prepare_to_web(img, drawable, sharpen_value, max_img_size):
img.undo_group_start()

#Auto Level
pdb.gimp_levels_stretch(drawable)

original_width = img.width
original_height = img.height

if original_width > original_height:
img_width = max_img_size
img_height = calc_aspect_dim(img_width, original_width, original_height)
else:
img_height = max_img_size
img_width = calc_aspect_dim(img_height, original_height, original_width)

pdb.gimp_image_scale(img, img_width, img_height)

# Downsized images lose sharpness. So increase sharpness
pdb.plug_in_sharpen (img, drawable, sharpen_value)

img.undo_group_end()

register(
"prepare_to_web",
"Make the image ready for web",
"Make the image ready for web",
"Baris EFE",
"GPL",
"2006",
"/Python-Fu/BarisEFE/prepare_to_web",
"RGB*",
[
(PF_INT, "sharpen_value", "Sharpen Value", 30),
(PF_INT, "max_img_size", "Maximum width or height (in pixels) for image", 600)
],
[],
prepare_to_web)

main()

Screenshot:


Kaynaklar:
Gimp Python Documentation, James Henstridge