diff --git a/tofu/config.py b/tofu/config.py index 1a5d4e7..8afb83c 100644 --- a/tofu/config.py +++ b/tofu/config.py @@ -34,13 +34,18 @@ 'output-minimum': { 'default': None, 'type': float, - 'help': "Minimum value that maps to zero", + 'help': "Minimum value that maps to zero (turns on --output-rescale)", 'metavar': 'MIN'}, 'output-maximum': { 'default': None, 'type': float, - 'help': "Maximum input value that maps to largest output value", + 'help': "Maximum input value that maps to largest output value (turns on --output-rescale)", 'metavar': 'MAX'}, + 'output-rescale': { + 'default': False, + 'action': 'store_true', + 'help': "If true rescale grey values either automatically or according to set " + "--output-minimum and --output-maximum"}, 'output-bytes-per-file': { 'default': '128g', 'type': convert_filesize, diff --git a/tofu/tasks.py b/tofu/tasks.py index 5b66468..ffeb9ef 100644 --- a/tofu/tasks.py +++ b/tofu/tasks.py @@ -23,16 +23,20 @@ def get_writer(params): outname = params.output LOG.debug("Writing output to {}".format(outname)) - writer = get_task('write', filename=outname) + writer = get_task('write', filename=outname, rescale=params.output_rescale) writer.props.append = params.output_append if params.output_bitdepth != 32: writer.props.bits = params.output_bitdepth - if params.output_minimum is not None and params.output_maximum is not None: + if params.output_minimum is not None: writer.props.minimum = params.output_minimum + if params.output_maximum is not None: writer.props.maximum = params.output_maximum + if params.output_minimum is not None or params.output_maximum is not None: + LOG.info('--output-minimum or --output-maximum specified, turning --output-rescale on') + writer.props.rescale = True if hasattr (writer.props, 'bytes_per_file'): writer.props.bytes_per_file = params.output_bytes_per_file if hasattr(writer.props, 'tiff_bigtiff'):