#!/usr/bin/perl use strict; use warnings; use File::Temp qw/tempdir/; use File::Spec::Functions; use File::Copy; =pod Preprocessor for enblend masks. Transfers white areas in each mask (indicating pixels to keep) as black areas in other masks. Areas to be blended need to be indicated as shades of grey. Pass mask tif files as program arguments, originals are renamed and replaced by processed files. Requires ImageMagick. October 2006, Bruno Postle 2006-10-20 mask threshold mask as well This software is distributed under the same terms as enblend itself. =cut my $tempdir = tempdir (CLEANUP => 1); my $maskdir = catfile ($tempdir, 'mask'); my $pushdir = catfile ($tempdir, 'push'); my $workdir = catfile ($tempdir, 'work'); mkdir $maskdir; mkdir $pushdir; mkdir $workdir; for my $file (@ARGV) { my $maskdir_file = catfile ($maskdir, $file); my $pushdir_file = catfile ($pushdir, $file); my $workdir_file = catfile ($workdir, $file); `convert -threshold 99% $file $maskdir_file`; `convert -negate $maskdir_file $pushdir_file`; copy ($file, $workdir_file); } for my $file (@ARGV) { my $tempdir_file = catfile ($tempdir, $file); my $workdir_file = catfile ($workdir, $file); for my $temp (@ARGV) { next if ($temp eq $file); my $pushdir_temp = catfile ($pushdir, $temp); my $maskdir_temp = catfile ($maskdir, $temp); `composite $pushdir_temp $workdir_file $maskdir_temp $tempdir_file`; move ($tempdir_file, $workdir_file); } move ($file, "$file.bak.tif"); move ($workdir_file, $file); }