2018年4月27日金曜日

enfuse画像のHDR自動化Gimpスクリプト

オートブラケットで撮影した、露出を変えた画像を、enfuseする。
それをGimpで高精細化する自動化pythonスクリプト。
エラーが出たら、不足するプラグインを入れる。
最終的にレイヤーの透明度を手動調整する。
 ----------------------------------------------------------------------------------
from gimpfu import *
import gimpfu,time
from datetime import date
#
theImage=gimp.image_list()[0]
lay=theImage.active_layer
#
drawable = pdb.script_fu_separate_luminance(theImage, TRUE, FALSE)
active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Lum")
pdb.gimp_levels_auto(active_layer)
pdb.gimp_displays_flush()

pdb.gimp_image_set_active_layer(theImage, active_layer)
pdb.script_fu_advanced_tone_mapping(theImage, active_layer, 10, 75, 90, 2)
pdb.gimp_displays_flush()

active_layer = pdb.gimp_image_get_active_layer(theImage)
pdb.gimp_levels_auto(active_layer)
db.gimp_displays_flush()

pdb.gimp_image_lower_layer(theImage, active_layer)#toneMap下げる
pdb.gimp_image_lower_layer(theImage, active_layer)#toneMap下げる
pdb.gimp_displays_flush()

new_layer=theImage.add_layer(pdb.gimp_layer_copy(active_layer, True),-1)
layer=theImage.active_layer
active_layer=pdb.gimp_drawable_set_name(layer, 'ToneMapcopy1')

active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Chroma")
new_layer=theImage.add_layer(pdb.gimp_layer_copy(active_layer, True),-1)
layer=theImage.active_layer
active_layer=pdb.gimp_drawable_set_name(layer, 'Chromacopy')
#-----------------------------------------------
active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Lum")
pdb.gimp_image_lower_layer(theImage, active_layer)#Lum下げる
active_layer = pdb.gimp_image_get_layer_by_name(theImage, "ToneMapcopy1")
pdb.gimp_image_raise_layer(theImage, active_layer)#toneMap上げる
pdb.gimp_image_raise_layer(theImage, active_layer)#toneMap上げる
active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Chromacopy")
pdb.gimp_displays_flush()
pdb.script_fu_sg_copy_mask_from_above(theImage, active_layer)
active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Chromacopy")
pdb.gimp_image_raise_layer_to_top(theImage, active_layer)#toneMap上げる

active_layer = pdb.gimp_image_get_layer_by_name(theImage, "Lum")
pdb.gimp_image_raise_layer(theImage, active_layer)#Lum上げる
#------------------------------------------------------
mask = pdb.gimp_layer_create_mask(active_layer, 5)
pdb.gimp_layer_add_mask(active_layer, mask)
pdb.gimp_invert(mask)
pdb.gimp_layer_set_mode(active_layer, 4)

active_layer = pdb.gimp_image_get_layer_by_name(theImage, "ToneMapcopy1")
mask = pdb.gimp_layer_create_mask(active_layer, 5)
pdb.gimp_layer_add_mask(active_layer, mask)
pdb.gimp_invert(mask)
pdb.gimp_layer_set_mode(active_layer, 5)

pdb.gimp_displays_flush()

pdb.gimp_displays_flush()