Changeset 26866

Show
Ignore:
Timestamp:
11.02.2013 15:15:38 (7 years ago)
Author:
davidb
Message:

Introduction of -aspectpad... options. Useful when working with images that will feed into a 3D panorama

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/ImageConverter.pm

    r25787 r26866  
    9494    'deft' => "100", 
    9595    'range' => "1,", 
    96     'reqd' => "no" } 
     96    'reqd' => "no" }, 
     97 
     98      { 'name' => "apply_aspectpad", 
     99    'desc' => "{ImageConverter.apply_aspectpad}", 
     100    'type' => "enum", 
     101    'list' => [{'name' => "true", 'desc' => "{common.true}"}, 
     102           {'name' => "false", 'desc' => "{common.false}"}], 
     103    'deft' => "false", 
     104    'reqd' => "no" }, 
     105      { 'name' => "aspectpad_ratio", 
     106    'desc' => "{ImageConverter.aspectpad_ratio}", 
     107    'type' => "string", 
     108    'deft' => "2", 
     109    'range' => "1,", 
     110    'reqd' => "no" }, 
     111      { 'name' => "aspectpad_mode", 
     112    'desc' => "{ImageConverter.aspectpad_mode}", 
     113    'type' => "enum", 
     114    'list' => [{'name' => "al", 'desc' => "{aspectpad.al}"}, 
     115           {'name' => "ap", 'desc' => "{aspectpad.ap}"}, 
     116           {'name' => "l",  'desc' => "{aspectpad.l}"}, 
     117           {'name' => "p",  'desc' => "{aspectpad.p}"}], 
     118    'deft' => "al", 
     119    'reqd' => "no" }, 
     120      { 'name' => "aspectpad_colour", 
     121    'desc' => "{ImageConverter.aspectpad_colour}", 
     122    'type' => "string", 
     123    'deft' => "transparent", 
     124    'reqd' => "no" }, 
     125      { 'name' => "aspectpad_tolerance", 
     126    'desc' => "{ImageConverter.aspectpad_tolerance}", 
     127    'type' => "string", 
     128    'deft' => "0.0", 
     129    'range' => "0,", 
     130    'reqd' => "no" }, 
     131 
     132 
    97133         ]; 
    98134 
     
    213249    my $url_to_filehead = &unicode::filename_to_url($filehead); 
    214250    my $url_to_filename_no_path = &unicode::filename_to_url($filename_no_path); 
    215      
     251 
     252    my $type = "unknown"; 
     253 
    216254    # Convert the image to a new type (if required). 
    217255    my $converttotype = $self->{'converttotype'}; 
    218     my $type = "unknown"; 
    219256 
    220257    if ($converttotype ne "" && $filename_full_path !~ m/$converttotype$/) { 
     
    232269    } 
    233270    } 
     271 
     272    # Apply aspect padding (if required). 
     273    my $apply_aspectpad = $self->{'apply_aspectpad'}; 
     274 
     275    if ($apply_aspectpad eq "true") { 
     276    my $aspectpad_ratio     = $self->{'aspectpad_ratio'}; 
     277    my $aspectpad_mode      = $self->{'aspectpad_mode'}; 
     278    my $aspectpad_colour    = $self->{'aspectpad_colour'}; 
     279    my $aspectpad_tolerance = $self->{'aspectpad_tolerance'}; 
     280 
     281    ($type) = ($filename_full_path =~ m/\.(.*?)$/); 
     282    ##$type = lc($type); 
     283 
     284    my ($result, $aspectpad_filename_full_path) 
     285        = $self->aspectpad($filename_full_path, $type, $aspectpad_ratio, $aspectpad_mode,  
     286                   $aspectpad_colour, $aspectpad_tolerance, "", "ASPECTPAD"); 
     287 
     288    $filename_full_path = $aspectpad_filename_full_path; 
     289 
     290    if ($self->{'store_file_paths'}) { 
     291        $self->{'orig_file'} = $aspectpad_filename_full_path; 
     292    } 
     293    } 
     294     
     295 
    234296 
    235297    # add Image metadata  
     
    428490} 
    429491 
     492 
    430493sub convert_without_result { 
    431494    my $self = shift(@_); 
     
    439502              $convert_options,$convert_id,"without_result"); 
    440503} 
     504 
     505 
     506sub aspectpad { 
     507    my $self = shift(@_); 
     508    my $source_file_path     = shift(@_); 
     509    my $target_file_type     = shift(@_); 
     510    my $aspectpad_ratio      = shift(@_); 
     511    my $aspectpad_mode       = shift(@_);                   
     512    my $aspectpad_colour     = shift(@_); 
     513    my $aspectpad_tolerance  = shift(@_); 
     514 
     515    my $aspectpad_options  = shift(@_) || ""; 
     516    my $aspectpad_id       = shift(@_) || ""; 
     517    my $cache_mode       = shift(@_) || ""; 
     518 
     519    my $outhandle = $self->{'outhandle'}; 
     520    my $verbosity = $self->{'verbosity'}; 
     521 
     522    my $source_file_no_path = &File::Basename::basename($source_file_path); 
     523 
     524    # Determine the full name and path of the output file 
     525    my $target_file_path; 
     526    if ($self->{'enable_cache'}) { 
     527    my $cached_image_dir = $self->{'cached_dir'}; 
     528    my $image_root = $self->{'cached_file_root'}; 
     529    $image_root .= "_$aspectpad_id" if ($aspectpad_id ne ""); 
     530    my $image_file = "$image_root.$target_file_type"; 
     531    $target_file_path = &util::filename_cat($cached_image_dir,$image_file); 
     532    } 
     533    else { 
     534    $target_file_path = &util::get_tmp_filename($target_file_type); 
     535    push(@{$self->{'tmp_file_paths'}}, $target_file_path); 
     536    } 
     537 
     538    # Generate and run the aspectpad command 
     539    my $aspectpad_command = "\"".&util::get_perl_exec()."\" -S gs-magick.pl --verbosity=".$self->{'verbosity'}." aspectpad.sh -a $aspectpad_ratio -m $aspectpad_mode -p \"$aspectpad_colour\" -t $aspectpad_tolerance $aspectpad_options \"$source_file_path\" \"$target_file_path\""; 
     540 
     541    my $print_info = { 'message_prefix' => $aspectpad_id, 
     542               'message' => "Aspect padding image $source_file_no_path to: $aspectpad_id $target_file_type" }; 
     543    $print_info->{'cache_mode'} = $cache_mode if ($cache_mode ne ""); 
     544 
     545    my ($regenerated,$result,$had_error)  
     546    = $self->autorun_general_cmd($aspectpad_command,$source_file_path,$target_file_path,$print_info); 
     547 
     548    return ($result,$target_file_path); 
     549} 
     550 
     551 
     552 
    441553 
    442554