putenv('LD_LIBRARY_PATH=/petabox/sw/lib/kakadu'); $unzipCmd = 'unzip -p ' . escapeshellarg($zipPath) . ' ' . escapeshellarg($file); if ('jp2' == $fileExt) { $decompressCmd = " | /petabox/sw/bin/kdu_expand -no_seek -quiet -reduce {$powReduce} -i /dev/stdin -o " . $stdoutLink; if ($decompressToBmp) { $decompressCmd .= ' | bmptopnm '; } } else { if ('tif' == $fileExt) { // We need to create a temporary file for tifftopnm since it cannot // work on a pipe (the file must be seekable). // We use the GnuBookTiff prefix to give a hint in case things don't // get cleaned up. $tempFile = tempnam("/tmp", "GnuBookTiff"); if (1 != $scale) { if (onPowerNode()) { $pbmReduce = ' | pnmscale -reduce ' . $scale; } else { $pbmReduce = ' | pnmscale -nomix -reduce ' . $scale; } } else { $pbmReduce = ''; } $decompressCmd = ' > ' . $tempFile . ' ; tifftopnm ' . $tempFile . ' 2>/dev/null' . $pbmReduce; } else { GBfatal('Unknown source file extension: ' . $fileExt); } } // Non-integer scaling is currently disabled on the cluster // if (isset($_REQUEST['height'])) { // $cmd .= " | pnmscale -height {$_REQUEST['height']} ";
function reduceCommand($scale) { if (1 != $scale) { if (onPowerNode()) { return ' | pnmscale -reduce ' . $scale; } else { return ' | pnmscale -nomix -reduce ' . $scale; } } else { return ''; } }