#!/usr/bin/perl ########################################### # smartsharp # Mike Schilli, 2009 (m@perlmeister.com) ########################################### use warnings; use strict; use Gimp qw(:auto); use Gimp::Fu; use Log::Log4perl qw(:easy); register( "perl_fu_smartsharp", # Name "Sharpen an Image", # Explain "It's easy!", # Help "Mike Schilli", # Author "GPL", # Copyright "2009/06/30", # Date "/Smartsharp",# Menu "*", # Images accepted [], \&smartsharp # Function ); exit main(); ########################################### sub smartsharp { ########################################### my($img) = @_; my $layer = $img->image_get_active_layer(); # Create a copy to sharpen my $sharp_layer = $layer->layer_copy(0); $sharp_layer->layer_set_mode( OVERLAY_MODE); $sharp_layer->drawable_set_name("sharp"); $img->image_add_layer($sharp_layer, -1); $img->plug_in_unsharp_mask($sharp_layer, 1, 1.0, 0); # Create a mask layer my $mask_layer = $layer->layer_copy(0); $mask_layer->layer_set_mode( OVERLAY_MODE); $img->image_add_layer($mask_layer, -1); $mask_layer->drawable_set_name("mask"); # High Pass Filter, blur result $img->plug_in_neon($mask_layer, 10.0, .1); $img->plug_in_gauss_iir($mask_layer, 20.0, 1, 1); # Add mask layer as mask to sharp layer my $sharp_mask = $sharp_layer->layer_create_mask(0); $sharp_layer->layer_add_mask( $sharp_mask ); $mask_layer->edit_copy(); my $float = $sharp_mask->edit_paste(0); $float->floating_sel_anchor(); # Clean up $img->image_remove_layer($mask_layer); $img->image_merge_down($sharp_layer, 0); return $img; }