version 1.6, 2004/12/06 10:02:54
|
version 1.7, 2005/01/05 17:55:34
|
Line 24 use MPIWGlib;
|
Line 24 use MPIWGlib;
|
|
|
$| = 1; # unblock IO |
$| = 1; # unblock IO |
|
|
my $version = "V0.9.4 (ROC 6.12.2004)"; |
my $version = "V0.9.5 (ROC 5.1.2005)"; |
|
|
$debug = 0; |
$debug = 0; |
|
|
Line 46 my %img_type_ext = ("tif" => "TIFF", "ti
|
Line 46 my %img_type_ext = ("tif" => "TIFF", "ti
|
my %target_ext_type = ("TIFF" => "jpg", "JPEG" => "jpg"); |
my %target_ext_type = ("TIFF" => "jpg", "JPEG" => "jpg"); |
|
|
# default scale settings |
# default scale settings |
my $scalesize = 2048; # pixel of longest side |
my $scale_w = 2048; # width in pixel |
|
my $scale_h = 2048; # height in pixel |
my $scale_relative = 0; # scale by relative factor instead of destination size |
my $scale_relative = 0; # scale by relative factor instead of destination size |
my $jpeg_quality = 75; # default JPEG compression quality |
my $jpeg_quality = 75; # default JPEG compression quality |
my $use_encoder = 0; # autodetect encoder |
my $use_encoder = 0; # autodetect encoder |
Line 213 sub identify {
|
Line 214 sub identify {
|
my $bitdepth = 0; |
my $bitdepth = 0; |
# use quickident first |
# use quickident first |
$pictype = quickident($filepath); |
$pictype = quickident($filepath); |
# optimize tiff identification |
# optimized tiff identification |
if (($pictype)&&($pictype eq 'TIFF')) { |
if (($pictype)&&($pictype eq 'TIFF')) { |
logger('DEBUG', "running tiffinfo $tiffinfo"); |
logger('DEBUG', "running tiffinfo $tiffinfo"); |
if (open(IDENT, "nice -10 $tiffinfo '$filepath' 2>/dev/null |")) { |
if (open(IDENT, "nice -10 $tiffinfo '$filepath' 2>/dev/null |")) { |
while (<IDENT>) { |
while (<IDENT>) { |
chomp; |
chomp; |
|
# we take the biggest values, because embedded thumbnails |
|
# may also show up |
if (/Image Width:\s*(\d+)\s*Image Length:\s*(\d+)/) { |
if (/Image Width:\s*(\d+)\s*Image Length:\s*(\d+)/) { |
$picwidth = $1 if ($1 > $picwidth); |
$picwidth = $1 if ($1 > $picwidth); |
$picheight = $2 if ($2 > $picheight); |
$picheight = $2 if ($2 > $picheight); |
Line 270 sub quickident {
|
Line 273 sub quickident {
|
|
|
|
|
# |
# |
# $error = scale_jpeg(\$args); |
# $fact = scalefactor(\$args) |
# |
|
# scale JPEG images to JPEG using netpbm tools |
|
# |
# |
# args needed: $srcdir, $filename, $destdir, |
sub scalefactor { |
# $scalesize, $scale_rel, $picwidth, $picheight |
|
# |
|
sub scale_jpeg { |
|
my ($args) = @_; |
my ($args) = @_; |
|
|
my $srcdir = $$args{'srcdir'}; |
my $srcdir = $$args{'srcdir'}; |
my $filename = $$args{'filename'}; |
my $filename = $$args{'filename'}; |
my $destdir = $$args{'destdir'}; |
my $scale_w = $$args{'scale_w'}; |
my $scalesize = $$args{'scalesize'}; |
my $scale_h = $$args{'scale_h'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scaleopt; |
my $scale = 0; |
|
|
# convert jpg -> jpg |
|
my ($basename, $fileext) = splitfn($filename); |
|
my $newfn = $basename . ".jpg"; |
|
logger('INFO', "Convert(jpg): $filename -> $newfn"); |
|
return 1 if ($simulate); |
|
|
|
if ($scale_rel) { |
if ($scale_rel) { |
# scale relative -- no size needed, only scaling factor |
# scale relative -- no size needed, only scaling factor |
$scaleopt = $scalesize; |
$scale = $scale_w; |
} else { |
} else { |
# scale to size -- size needed |
# scale to size -- size needed |
my $pictype = $$args{'pictype'}; |
my $pictype = $$args{'pictype'}; |
my $picwidth = $$args{'picwidth'}; |
my $picwidth = $$args{'picwidth'}; |
my $picheight = $$args{'picheight'}; |
my $picheight = $$args{'picheight'}; |
if (! $picwidth) { |
if (! $picwidth) { |
|
# no size yet - identify |
($pictype, $picwidth, $picheight) = identify("$srcdir/$filename"); |
($pictype, $picwidth, $picheight) = identify("$srcdir/$filename"); |
if ((! $pictype)||($picwidth == 0)||($picheight == 0)) { |
if ((! $pictype)||($picwidth == 0)||($picheight == 0)) { |
logger('ERROR', "unable to identify $srcdir/$filename!"); |
logger('ERROR', "unable to identify $srcdir/$filename!"); |
return 1; |
return 0; |
} |
|
} |
} |
if ($picheight > $picwidth) { |
# save values |
$scaleopt = $scalesize / $picheight; |
$$args{'pictype'} = $pictype; |
logger('DEBUG', "PIC is portrait"); |
$$args{'picwidth'} = $picwidth; |
|
$$args{'picheight'} = $picheight; |
|
} |
|
# calculate x and y scaling factors |
|
my $scale_x = $scale_w / $picwidth; |
|
my $scale_y = $scale_h / $picheight; |
|
# take the smallest |
|
if ($scale_x < $scale_y) { |
|
$scale = $scale_x; |
|
logger('DEBUG', "PIC scale to width"); |
} else { |
} else { |
$scaleopt = $scalesize / $picwidth; |
$scale = $scale_y; |
logger('DEBUG', "PIC is landscape"); |
logger('DEBUG', "PIC scale to height"); |
} |
} |
if ($scaleopt >= 1) { |
if ($scale >= 1) { |
$scaleopt = 1; |
$scale = 1; |
logger('DEBUG', "PIC is already smaller"); |
logger('DEBUG', "PIC is already smaller"); |
|
# continue since we may have to convert |
|
} |
} |
} |
|
return $scale; |
} |
} |
|
|
|
|
|
# |
|
# $error = scale_jpeg(\$args); |
|
# |
|
# scale JPEG images to JPEG using netpbm tools |
|
# |
|
# args needed: $srcdir, $filename, $destdir, |
|
# $scale_w, $scale_h, $scale_rel, $picwidth, $picheight |
|
# |
|
sub scale_jpeg { |
|
my ($args) = @_; |
|
|
|
my $srcdir = $$args{'srcdir'}; |
|
my $filename = $$args{'filename'}; |
|
my $destdir = $$args{'destdir'}; |
|
my $scale_w = $$args{'scale_w'}; |
|
my $scale_h = $$args{'scale_h'}; |
|
my $scale_rel = $$args{'scale_rel'}; |
|
my $scaleopt; |
|
|
|
# convert jpg -> jpg |
|
my ($basename, $fileext) = splitfn($filename); |
|
my $newfn = $basename . ".jpg"; |
|
logger('INFO', "Convert(jpg): $filename -> $newfn"); |
|
return 1 if ($simulate); |
|
|
|
$scaleopt = scalefactor($args); |
|
|
if (!$scaleopt) { |
if (!$scaleopt) { |
logger('ERROR', "unable to calculate scaling options!"); |
logger('ERROR', "unable to calculate scaling options!"); |
return 1; |
return 1; |
} |
} |
|
|
|
if ($scaleopt = 1) { |
|
# is already smaller |
|
return 0; |
|
} |
|
|
# convert |
# convert |
logger('DEBUG', "nice -10 $jpegloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter > '$destdir/$newfn' 2>/dev/null"); |
logger('DEBUG', "nice -10 $jpegloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter > '$destdir/$newfn' 2>/dev/null"); |
return 0 if ($simulate); |
return 0 if ($simulate); |
if (system("nice -10 $jpegloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter > '$destdir/$newfn' 2>/dev/null") != 0) { |
if (system("nice -10 $jpegloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter > '$destdir/$newfn' 2>/dev/null") != 0) { |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
unlink "$destdir/$newfn"; |
unlink "$destdir/$newfn"; |
|
} |
return 1; |
return 1; |
} |
} |
|
|
Line 355 sub scale_jpeg {
|
Line 396 sub scale_jpeg {
|
# scale TIFF images to JPEG using ImageMagick convert |
# scale TIFF images to JPEG using ImageMagick convert |
# |
# |
# args needed: $srcdir, $filename, $destdir, |
# args needed: $srcdir, $filename, $destdir, |
# $scalesize, $scale_rel, $picwidth, $picheight |
# $scale_w, $scale_h, $scale_rel, $picwidth, $picheight |
# |
# |
sub scale_tiff_jpeg2 { |
sub scale_tiff_jpeg2 { |
my ($args) = @_; |
my ($args) = @_; |
Line 363 sub scale_tiff_jpeg2 {
|
Line 404 sub scale_tiff_jpeg2 {
|
my $srcdir = $$args{'srcdir'}; |
my $srcdir = $$args{'srcdir'}; |
my $filename = $$args{'filename'}; |
my $filename = $$args{'filename'}; |
my $destdir = $$args{'destdir'}; |
my $destdir = $$args{'destdir'}; |
my $scalesize = $$args{'scalesize'}; |
my $scale_w = $$args{'scale_w'}; |
|
my $scale_h = $$args{'scale_h'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scaleopt; |
my $scaleopt; |
|
|
my ($basename, $fileext) = splitfn($filename); |
my ($basename, $fileext) = splitfn($filename); |
my $newfn = $basename . ".jpg"; |
my $newfn = $basename . ".jpg"; |
logger('INFO', "Convert(tiff2): $filename -> $newfn"); |
logger('INFO', "Convert(tiff2): $filename -> $newfn"); |
return 1 if ($simulate); |
|
|
|
if ($scale_rel) { |
|
# scale relative -- no size needed, only scaling factor |
|
$scaleopt = $scalesize; |
|
} else { |
|
# scale to size -- size needed |
|
my $pictype = $$args{'pictype'}; |
|
my $picwidth = $$args{'picwidth'}; |
|
my $picheight = $$args{'picheight'}; |
|
if (! $picwidth) { |
|
($pictype, $picwidth, $picheight) = identify("$srcdir/$filename"); |
|
if ((! $pictype)||($picwidth == 0)||($picheight == 0)) { |
|
logger('ERROR', "unable to identify $srcdir/$filename!"); |
|
return 1; |
|
} |
|
} |
|
if ($picheight > $picwidth) { |
|
$scaleopt = $scalesize / $picheight; |
|
logger('DEBUG', "PIC is portrait"); |
|
} else { |
|
$scaleopt = $scalesize / $picwidth; |
|
logger('DEBUG', "PIC is landscape"); |
|
} |
|
if ($scaleopt >= 1) { |
|
$scaleopt = 1; |
|
logger('DEBUG', "PIC is already smaller"); |
|
} |
|
} |
|
|
|
if (!$scaleopt) { |
|
logger('ERROR', "unable to calculate scaling options!"); |
|
return 1; |
|
} |
|
|
|
if ($scale_rel) { |
if ($scale_rel) { |
my $per_scale = 100 * $scaleopt; |
my $per_scale = 100 * $scale_w; |
logger('DEBUG', "nice -10 $converter -quality $jpeg_quality -scale $per_scale\% '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null"); |
logger('DEBUG', "nice -10 $converter -quality $jpeg_quality -scale $per_scale\% '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null"); |
return 0 if ($simulate); |
return 0 if ($simulate); |
if (system("nice -10 $converter -quality $jpeg_quality -scale $per_scale\% '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null\n") != 0) { |
if (system("nice -10 $converter -quality $jpeg_quality -scale $per_scale\% '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null\n") != 0) { |
Line 414 sub scale_tiff_jpeg2 {
|
Line 422 sub scale_tiff_jpeg2 {
|
return 1; |
return 1; |
} |
} |
} else { |
} else { |
logger('DEBUG', "nice -10 $converter -quality $jpeg_quality -scale ${scalesize}x${scalesize} '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null"); |
logger('DEBUG', "nice -10 $converter -quality $jpeg_quality -scale ${scale_w}x${scale_h} '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null"); |
return 0 if ($simulate); |
return 0 if ($simulate); |
if (system("nice -10 $converter -quality $jpeg_quality -scale ${scalesize}x${scalesize} '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null\n") != 0) { |
if (system("nice -10 $converter -quality $jpeg_quality -scale ${scale_w}x${scale_h} '$srcdir/$filename' '$destdir/$newfn' 2>/dev/null\n") != 0) { |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
|
unlink "$destdir/$newfn"; |
|
} |
return 1; |
return 1; |
} |
} |
} |
} |
Line 426 sub scale_tiff_jpeg2 {
|
Line 439 sub scale_tiff_jpeg2 {
|
chmod $file_perm, "$destdir/$newfn" or |
chmod $file_perm, "$destdir/$newfn" or |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
|
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
|
unlink "$destdir/$newfn"; |
|
return 1; |
|
} |
|
return 0; |
return 0; |
} |
} |
|
|
Line 442 sub scale_tiff_jpeg2 {
|
Line 449 sub scale_tiff_jpeg2 {
|
# scale TIFF images to JPEG using netpbm tools |
# scale TIFF images to JPEG using netpbm tools |
# |
# |
# args needed: $srcdir, $filename, $destdir, |
# args needed: $srcdir, $filename, $destdir, |
# $scalesize, $scale_rel, $picwidth, $picheight |
# $scale_w, $scale_h, $scale_rel, $picwidth, $picheight |
# |
# |
sub scale_tiff_jpeg { |
sub scale_tiff_jpeg { |
my ($args) = @_; |
my ($args) = @_; |
Line 450 sub scale_tiff_jpeg {
|
Line 457 sub scale_tiff_jpeg {
|
my $srcdir = $$args{'srcdir'}; |
my $srcdir = $$args{'srcdir'}; |
my $filename = $$args{'filename'}; |
my $filename = $$args{'filename'}; |
my $destdir = $$args{'destdir'}; |
my $destdir = $$args{'destdir'}; |
my $scalesize = $$args{'scalesize'}; |
my $bitdepth = $$args{'bitdepth'}; |
|
my $scale_w = $$args{'scale_w'}; |
|
my $scale_h = $$args{'scale_h'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scaleopt; |
my $scaleopt; |
|
|
Line 460 sub scale_tiff_jpeg {
|
Line 469 sub scale_tiff_jpeg {
|
logger('INFO', "Convert(tiff1): $filename -> $newfn"); |
logger('INFO', "Convert(tiff1): $filename -> $newfn"); |
return 1 if ($simulate); |
return 1 if ($simulate); |
|
|
if ($scale_rel) { |
$scaleopt = scalefactor($args); |
# scale relative -- no size needed, only scaling factor |
|
$scaleopt = $scalesize; |
|
} else { |
|
# scale to size -- size needed |
|
my $pictype = $$args{'pictype'}; |
|
my $picwidth = $$args{'picwidth'}; |
|
my $picheight = $$args{'picheight'}; |
|
if (! $picwidth) { |
|
($pictype, $picwidth, $picheight) = identify("$srcdir/$filename"); |
|
if ((! $pictype)||($picwidth == 0)||($picheight == 0)) { |
|
logger('ERROR', "unable to identify $srcdir/$filename!"); |
|
return 1; |
|
} |
|
} |
|
if ($picheight > $picwidth) { |
|
$scaleopt = $scalesize / $picheight; |
|
logger('DEBUG', "PIC is portrait"); |
|
} else { |
|
$scaleopt = $scalesize / $picwidth; |
|
logger('DEBUG', "PIC is landscape"); |
|
} |
|
if ($scaleopt >= 1) { |
|
$scaleopt = 1; |
|
logger('DEBUG', "PIC is already smaller"); |
|
} |
|
} |
|
|
|
if (!$scaleopt) { |
if (!$scaleopt) { |
logger('ERROR', "unable to calculate scaling options!"); |
logger('ERROR', "unable to calculate scaling options!"); |
Line 494 sub scale_tiff_jpeg {
|
Line 477 sub scale_tiff_jpeg {
|
} |
} |
|
|
# convert |
# convert |
logger('DEBUG', "nice -10 $tiffloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter --quality $jpeg_quality > '$destdir/$newfn' 2>/dev/null"); |
my $cmd = "nice -10 $tiffloader \'$srcdir/$filename\' 2>/dev/null "; |
|
if ($bitdepth == 1) { |
|
# antialiasing bilevel images |
|
$cmd .= "| nice -10 $quantizer 2 2 2>/dev/null "; |
|
} |
|
$cmd .= "| nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter --quality $jpeg_quality > '$destdir/$newfn' 2>/dev/null"; |
|
logger('DEBUG', "$cmd"); |
return 0 if ($simulate); |
return 0 if ($simulate); |
if (system("nice -10 $tiffloader '$srcdir/$filename' 2>/dev/null | nice -10 $scaler $scaleopt 2>/dev/null | nice -10 $jpegwriter --quality $jpeg_quality > '$destdir/$newfn' 2>/dev/null") != 0) { |
if (system($cmd) != 0) { |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
unlink "$destdir/$newfn"; |
unlink "$destdir/$newfn"; |
|
} |
return 1; |
return 1; |
} |
} |
|
|
Line 506 sub scale_tiff_jpeg {
|
Line 499 sub scale_tiff_jpeg {
|
chmod $file_perm, "$destdir/$newfn" or |
chmod $file_perm, "$destdir/$newfn" or |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
|
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
|
unlink "$destdir/$newfn"; |
|
return 1; |
|
} |
|
return 0; |
return 0; |
} |
} |
|
|
Line 523 sub scale_tiff_jpeg {
|
Line 510 sub scale_tiff_jpeg {
|
# scale TIFF images to PNG using netpbm tools |
# scale TIFF images to PNG using netpbm tools |
# |
# |
# args needed: $srcdir, $filename, $destdir, |
# args needed: $srcdir, $filename, $destdir, |
# $scalesize, $scale_rel, $picwidth, $picheight |
# $scale_w, $scale_h, $scale_rel, $picwidth, $picheight |
# |
# |
sub scale_tiff_png { |
sub scale_tiff_png { |
my ($args) = @_; |
my ($args) = @_; |
Line 531 sub scale_tiff_png {
|
Line 518 sub scale_tiff_png {
|
my $srcdir = $$args{'srcdir'}; |
my $srcdir = $$args{'srcdir'}; |
my $filename = $$args{'filename'}; |
my $filename = $$args{'filename'}; |
my $destdir = $$args{'destdir'}; |
my $destdir = $$args{'destdir'}; |
my $scalesize = $$args{'scalesize'}; |
|
my $bitdepth = $$args{'bitdepth'}; |
my $bitdepth = $$args{'bitdepth'}; |
|
my $scale_w = $$args{'scale_w'}; |
|
my $scale_h = $$args{'scale_h'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scale_rel = $$args{'scale_rel'}; |
my $scaleopt; |
my $scaleopt; |
|
|
# convert jpg -> jpg |
# convert tif -> png |
my ($basename, $fileext) = splitfn($filename); |
my ($basename, $fileext) = splitfn($filename); |
my $newfn = $basename . ".png"; |
my $newfn = $basename . ".png"; |
logger('INFO', "Convert(tiff3): $filename -> $newfn"); |
logger('INFO', "Convert(tiff3): $filename -> $newfn"); |
|
|
if ($scale_rel) { |
$scaleopt = scalefactor($args); |
# scale relative -- no size needed, only scaling factor |
|
$scaleopt = $scalesize; |
|
} else { |
|
# scale to size -- size needed |
|
my $pictype = $$args{'pictype'}; |
|
my $picwidth = $$args{'picwidth'}; |
|
my $picheight = $$args{'picheight'}; |
|
if (! $picwidth) { |
|
($pictype, $picwidth, $picheight, $bitdepth) = identify("$srcdir/$filename"); |
|
if ((! $pictype)||($picwidth == 0)||($picheight == 0)) { |
|
logger('ERROR', "unable to identify $srcdir/$filename!"); |
|
return 1; |
|
} |
|
} |
|
if ($picheight > $picwidth) { |
|
$scaleopt = $scalesize / $picheight; |
|
logger('DEBUG', "PIC is portrait"); |
|
} else { |
|
$scaleopt = $scalesize / $picwidth; |
|
logger('DEBUG', "PIC is landscape"); |
|
} |
|
if ($scaleopt >= 1) { |
|
$scaleopt = 1; |
|
logger('DEBUG', "PIC is already smaller"); |
|
} |
|
} |
|
|
|
if (!$scaleopt) { |
if (!$scaleopt) { |
logger('ERROR', "unable to calculate scaling options!"); |
logger('ERROR', "unable to calculate scaling options!"); |
Line 585 sub scale_tiff_png {
|
Line 547 sub scale_tiff_png {
|
return 0 if ($simulate); |
return 0 if ($simulate); |
if (system($cmd) != 0) { |
if (system($cmd) != 0) { |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
logger('ERROR', "error converting '$srcdir/$filename'!"); |
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
unlink "$destdir/$newfn"; |
unlink "$destdir/$newfn"; |
|
} |
return 1; |
return 1; |
} |
} |
|
|
Line 593 sub scale_tiff_png {
|
Line 559 sub scale_tiff_png {
|
chmod $file_perm, "$destdir/$newfn" or |
chmod $file_perm, "$destdir/$newfn" or |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
logger('WARNING', "unable to set permission on '$destdir/$newfn'"); |
|
|
if (! -s "$destdir/$newfn") { |
|
# file broken (size 0) |
|
logger('ERROR', "created file '$destdir/$newfn' broken -- will be removed!"); |
|
unlink "$destdir/$newfn"; |
|
return 1; |
|
} |
|
return 0; |
return 0; |
} |
} |
|
|
Line 648 sub convert_file {
|
Line 608 sub convert_file {
|
if (-f "$destdir/$newfn") { |
if (-f "$destdir/$newfn") { |
logger('DEBUG', "CONV file exists: $newfn"); |
logger('DEBUG', "CONV file exists: $newfn"); |
if (! $overwrite) { |
if (! $overwrite) { |
|
# compare age with source file |
|
if (-M "$destdir/$newfn" > -M "$srcdir/$filename") { |
|
logger('DEBUG', "CONV file is older: $newfn"); |
|
} else { |
logger('INFO', "File already converted: $newfn"); |
logger('INFO', "File already converted: $newfn"); |
return 0; |
return 0; |
} |
} |
} |
} |
|
} |
} else { |
} else { |
logger('DEBUG', "target extension for $pictype unknown!"); |
logger('DEBUG', "target extension for $pictype unknown!"); |
} |
} |
Line 674 sub convert_file {
|
Line 639 sub convert_file {
|
$args{'picheight'} = $picheight; |
$args{'picheight'} = $picheight; |
$args{'bitdepth'} = $bitdepth; |
$args{'bitdepth'} = $bitdepth; |
$args{'srcdir'} = $srcdir; |
$args{'srcdir'} = $srcdir; |
$args{'scalesize'} = $scalesize; |
$args{'scale_w'} = $scale_w; |
|
$args{'scale_h'} = $scale_h; |
$args{'scale_rel'} = $scale_relative; |
$args{'scale_rel'} = $scale_relative; |
|
|
# decide conversion based on image type and encoding preferences |
# decide conversion based on image type and encoding preferences |
Line 774 sub convert_dir {
|
Line 740 sub convert_dir {
|
my ($srcdir, $workdir, $destdir) = @_; |
my ($srcdir, $workdir, $destdir) = @_; |
|
|
logger('INFO', "** Converting Scans **"); |
logger('INFO', "** Converting Scans **"); |
logger('INFO', "Starting in directory '$srcdir/$workdir'"); |
|
|
|
|
if (-d "$srcdir/$workdir") { |
|
# it's a dirrectory |
|
logger('INFO', "Starting in directory '$srcdir/$workdir'"); |
walk_convert_dir($srcdir, $workdir, $destdir); |
walk_convert_dir($srcdir, $workdir, $destdir); |
|
|
# touch source directory so digilib rescans the thumbnails |
# touch source directory so digilib rescans the thumbnails |
#logger('DEBUG', "/usr/bin/touch $source_base_dirs[0]/$workdir"); |
#logger('DEBUG', "/usr/bin/touch $source_base_dirs[0]/$workdir"); |
system("/usr/bin/touch '$srcdir/$workdir'"); |
system("/usr/bin/touch '$srcdir/$workdir'"); |
|
} elsif (-f _) { |
|
# it's a file |
|
logger('INFO', "Converting file '$srcdir/$workdir'"); |
|
convert_file($srcdir, $workdir, $destdir); |
|
# touch source parent directory so digilib rescans the thumbnails |
|
my $pdir = "$srcdir/$workdir"; |
|
# chop off after the last slash |
|
$pdir =~ s/\/[^\/]+$/\//; |
|
system("/usr/bin/touch '$pdir'"); |
|
} |
|
|
logger('DONE', "** Finished converting scans **"); |
logger('DONE', "** Finished converting scans **"); |
return 1; |
return 1; |
Line 798 if ($#ARGV < 3) {
|
Line 775 if ($#ARGV < 3) {
|
print "Scale-O-Mat $version\n"; |
print "Scale-O-Mat $version\n"; |
print " use: scaleomat.pl -src=src-base -dest=dest-base -dir=workdir [...]\n"; |
print " use: scaleomat.pl -src=src-base -dest=dest-base -dir=workdir [...]\n"; |
print " reads from scr-base/workdir and writes to dest-base/workdir\n"; |
print " reads from scr-base/workdir and writes to dest-base/workdir\n"; |
print " -scaleto=destination size\n"; |
print " -scaleto=destination size (S or WxH)\n"; |
print " -scaleby=magnification factor.\n"; |
print " -scaleby=magnification factor.\n"; |
print " -jpegqual=JPEG quality (0-100)\n"; |
print " -jpegqual=JPEG quality (0-100)\n"; |
print " -replace=yes replaces existing files (default=skip).\n"; |
print " -replace=yes replaces existing files (default=skip).\n"; |
Line 824 my $workdir = cleanpath($$args{'dir'});
|
Line 801 my $workdir = cleanpath($$args{'dir'});
|
# destination size |
# destination size |
if ($$args{'scaleby'}) { |
if ($$args{'scaleby'}) { |
$scale_relative = 1; |
$scale_relative = 1; |
$scalesize = $$args{'scaleby'}; |
$scale_w = $$args{'scaleby'}; |
logger('INFO', "Scaling relative by factor $scalesize"); |
logger('INFO', "Scaling relative by factor $scale_w"); |
} |
} |
if ($$args{'scaleto'}) { |
if ($$args{'scaleto'}) { |
$scale_relative = 0; |
$scale_relative = 0; |
$scalesize = $$args{'scaleto'}; |
if ($$args{'scaleto'} =~ /(\d+)x(\d+)/) { |
logger('INFO', "Scaling absolute to size $scalesize"); |
$scale_w = $1; |
|
$scale_h = $2; |
|
} else { |
|
$scale_w = $$args{'scaleto'}; |
|
$scale_h = $$args{'scaleto'}; |
|
} |
|
logger('INFO', "Scaling absolute to size $scale_w x $scale_h"); |
} |
} |
|
|
# JPEG quality |
# JPEG quality |