Isis 3 Programmer Reference
Isis::ImageExporter Class Referenceabstract

Export Isis cubes into standard formats. More...

#include <ImageExporter.h>

Inheritance diagram for Isis::ImageExporter:
Inheritance graph
Collaboration diagram for Isis::ImageExporter:
Collaboration graph

Public Member Functions

 ImageExporter ()
 Construct the exporter. More...
 
virtual ~ImageExporter ()
 Destruct the exporter. More...
 
void operator() (vector< Buffer *> &in) const
 The method for writing a line of input image data (with potentially several bands representing color channels) to the output image. More...
 
virtual void write (FileName outputName, int quality=100, QString compression="none")
 Export the Isis cube channels to the given standard image. More...
 
int samples () const
 Number of samples (columns) in the output image. More...
 
int lines () const
 Number of lines (rows) in the output image. More...
 
int bands () const
 Number of bands (channels) in the output image. More...
 
double inputMinimum (int channel) const
 Returns the input minimum for the given channel. More...
 
double inputMaximum (int channel) const
 Returns the input maximum for the given channel. More...
 
void setOutputPixelRange (double outputPixelMinimum, double outputPixelMaximum)
 Set the DN floor and ceiling for the exported image. More...
 
virtual void setGrayscale (ExportDescription &desc)=0
 Pure virtual method for setting up an export to a grayscale image. More...
 
virtual void setRgb (ExportDescription &desc)=0
 Pure virtual method for setting up an export to an RGB image. More...
 
virtual void setRgba (ExportDescription &desc)=0
 Pure virtual method for setting up an export to an RGBA image. More...
 

Static Public Member Functions

static ImageExporterfromFormat (QString format)
 A static (factory) method for constructing an ImageExporter instance from an output format. More...
 

Protected Types

typedef void(ImageExporter::* WriteChannels) (vector< Buffer *> &in) const
 Friendly alias for a method used to write a particular color channel. More...
 

Protected Member Functions

virtual void initialize (ExportDescription &desc)=0
 Generic initialization with the export description. More...
 
void setExtension (QString extension)
 Sets the extension for the output image and generates the extension for the world file from it. More...
 
void setExportDescription (ExportDescription &desc)
 Sets the description for the output image. More...
 
CubeinitializeProcess ()
 Sets up the export process with the parameters described within the given description. More...
 
QString extension () const
 Gets the extension for the output image. More...
 
ExportDescriptionexportDescription () const
 Gets the description for the output image. More...
 
ProcessExportprocess () const
 Get a reference to the process object, useful for subclasses to access and manipulate the process. More...
 
PixelType pixelType () const
 Returns the pixel type. More...
 
virtual int outputPixelValue (double dn) const
 Return the output clamped integer pixel value from the input double-precision DN. More...
 
virtual void writeGrayscale (vector< Buffer *> &in) const =0
 Pure virtual method for writing a line of grayscale data to the output image. More...
 
virtual void writeRgb (vector< Buffer *> &in) const =0
 Pure virtual method for writing a line of RGB data to the output image. More...
 
virtual void writeRgba (vector< Buffer *> &in) const =0
 Pure virtual method for writing a line of RGBA data to the output image. More...
 

Private Member Functions

CubeaddChannel (int i)
 Add a channel of input data to the process from the export description at the given index. More...
 
void createWorldFile (FileName outputName)
 Creates a world file is the input has a map projection. More...
 

Private Attributes

ProcessExportm_process
 The object that feeds lines to this instance and handles stretching. More...
 
WriteChannels m_writeMethod
 Method pointer to one of the pure virtual write methods. More...
 
QString m_extension
 Extension to append to the output image if not already provided. More...
 
QString m_worldExtension
 Extension to append to the output world file. More...
 
int m_samples
 Number of samples (columns) in the output image. More...
 
int m_lines
 Number of lines (rows) in the output image. More...
 
int m_bands
 Number of bands (channels) in the output image. More...
 
double m_outputPixelMinimum
 ! The absolute minimum value for the output pixels. More...
 
double m_outputPixelMaximum
 ! The absolute maximum value for the output pixels. More...
 
ExportDescriptionm_exportDescription
 ! The description for the export. More...
 

Detailed Description

Export Isis cubes into standard formats.

Abstract base class for a series of image exporters. Each exporter handles a specialized suite of standard image formats, and can be used as a black-box with the write() method, or for finer control, the importer can act as a functor in a ProcessExport routine.

Author
2012-04-03 Travis Addair
History:

2012-04-04 Travis Addair - Added documentation.

2012-08-28 Steven Lambright - The world file should no longer overwrite the output image. This is related to #832/#970. References #579.

2013-06-05 Jeannie Backer - Changed member function and variable names for clarity. Added ExportDescription member variable, mutator, and accessor. Removed "get" prefix from method names to bring class closer to Isis coding standards. Added accessor for extension and pixel type. Added pure virtual initialize() method to be called in the setGrayscale(), setRgb(), and setRgba() methods. References #1380.

2015-02-12 Jeffrey Covington - Added optional parameter to virtual method write() to choose a compression algorithm. Fixes #1745.

Definition at line 70 of file ImageExporter.h.

Member Typedef Documentation

◆ WriteChannels

typedef void(ImageExporter::* Isis::ImageExporter::WriteChannels) (vector< Buffer * > &in) const
protected

Friendly alias for a method used to write a particular color channel.

Definition at line 114 of file ImageExporter.h.

Constructor & Destructor Documentation

◆ ImageExporter()

Isis::ImageExporter::ImageExporter ( )

Construct the exporter.

Definition at line 22 of file ImageExporter.cpp.

◆ ~ImageExporter()

Isis::ImageExporter::~ImageExporter ( )
virtual

Destruct the exporter.

Also deletes the process object.

Definition at line 60 of file ImageExporter.cpp.

Member Function Documentation

◆ addChannel()

Cube * Isis::ImageExporter::addChannel ( int  i)
private

Add a channel of input data to the process from the export description at the given index.

Parameters
iIndex of the channel to add within the export description
Returns
A cube pointer to the channel added, owned by the process

Definition at line 340 of file ImageExporter.cpp.

References Isis::ExportDescription::ChannelDescription::attributes(), Isis::FileName::expanded(), Isis::ExportDescription::ChannelDescription::filename(), Isis::ExportDescription::ChannelDescription::hasCustomRange(), Isis::ExportDescription::ChannelDescription::inputMaximum(), Isis::ExportDescription::ChannelDescription::inputMinimum(), Isis::Process::SetInputCube(), and Isis::ProcessExport::SetInputRange().

◆ bands()

int Isis::ImageExporter::bands ( ) const

Number of bands (channels) in the output image.

Returns
The depth of the output

Definition at line 132 of file ImageExporter.cpp.

Referenced by Isis::QtExporter::checkDataSize(), Isis::JP2Exporter::createBuffer(), Isis::TiffExporter::createBuffer(), Isis::TiffExporter::setBuffer(), Isis::JP2Exporter::write(), and Isis::TiffExporter::write().

◆ createWorldFile()

void Isis::ImageExporter::createWorldFile ( FileName  outputName)
private

Creates a world file is the input has a map projection.

Parameters
outputNameName of the world file

Definition at line 358 of file ImageExporter.cpp.

References Isis::FileName::addExtension(), Isis::ProcessExport::CreateWorldFile(), Isis::Process::EndProcess(), Isis::FileName::expanded(), and Isis::FileName::removeExtension().

◆ exportDescription()

ExportDescription & Isis::ImageExporter::exportDescription ( ) const
protected

Gets the description for the output image.

Returns
The export description

Definition at line 220 of file ImageExporter.cpp.

◆ extension()

QString Isis::ImageExporter::extension ( ) const
protected

Gets the extension for the output image.

Returns
The extension for the output image

Definition at line 202 of file ImageExporter.cpp.

Referenced by Isis::JP2Exporter::write(), Isis::TiffExporter::write(), and Isis::QtExporter::write().

◆ fromFormat()

ImageExporter * Isis::ImageExporter::fromFormat ( QString  format)
static

A static (factory) method for constructing an ImageExporter instance from an output format.

The specific subclass of the returned instance is determined from the desired output image format provided. Each subclass has knowledge of whether or not it can write a particular format. Because the ability to export an image format is not mutually exclusive amongst exporters, the order of condieration here matters. For example, using a TIFF exporter takes precedence over a Qt exporter for TIFF images, because the former can process cubes greater than 2GB while the latter cannot. It is the caller's responsibility to delete the exporter instance when they are finished with it.

Parameters
formatThe format for the output image to be created
Returns
A pointer to the instantiated exporter owned by the caller

Definition at line 384 of file ImageExporter.cpp.

References _FILEINFO_, Isis::JP2Exporter::canWriteFormat(), Isis::TiffExporter::canWriteFormat(), Isis::QtExporter::canWriteFormat(), and Isis::IException::Programmer.

◆ initialize()

void Isis::ImageExporter::initialize ( ExportDescription desc)
protectedpure virtual

Generic initialization with the export description.

Set the export description given the pixel type of the passed in description. Use the number of channels in the export description to determine the write method (i.e. grayscale, rgb, or rgba). This will also set the member variables for the number of samples, lines, and bands.

Parameters
descExport description containing necessary channel information

Implemented in Isis::QtExporter, and Isis::StreamExporter.

Definition at line 52 of file ImageExporter.cpp.

Referenced by Isis::StreamExporter::initialize(), and Isis::QtExporter::initialize().

◆ initializeProcess()

Cube * Isis::ImageExporter::initializeProcess ( )
protected

Sets up the export process with the parameters described within the given description.

This method determines determines whether to write the data as grayscale, RGB, or RGBA. It then opens a cube for retrieving the input data and establishing the dimensions of the output image. Next, the ProcessExport format is set to BIL and the ProcessExport output pixel type, output valid data range, and output null are set based on the given export description. Last, the absolute output pixel range is set based on the given description (this is the smallest and largest allowed pixel values in the output, including "special" pixel values).

Returns
A cube pointer to the first channel created, owned by the process

Definition at line 240 of file ImageExporter.cpp.

References _FILEINFO_, Isis::ProcessExport::BIL, Isis::Cube::lineCount(), Isis::IException::Programmer, Isis::Cube::sampleCount(), Isis::ProcessExport::setFormat(), Isis::ProcessExport::SetOutputNull(), Isis::ProcessExport::SetOutputRange(), Isis::ProcessExport::SetOutputType(), writeGrayscale(), writeRgb(), and writeRgba().

◆ inputMaximum()

double Isis::ImageExporter::inputMaximum ( int  channel) const

Returns the input maximum for the given channel.

Any value of max in the input cube will be mapped to the output max of the output channel.

Parameters
channelIndex of the channel within the process
Returns
The maximum DN in the input mapped to the maximum of the output

Definition at line 158 of file ImageExporter.cpp.

◆ inputMinimum()

double Isis::ImageExporter::inputMinimum ( int  channel) const

Returns the input minimum for the given channel.

Any value of min in the input cube will be mapped to the output min of the output channel.

Parameters
channelIndex of the channel within the process
Returns
The minimum DN in the input mapped to the minimum of the output

Definition at line 145 of file ImageExporter.cpp.

◆ lines()

int Isis::ImageExporter::lines ( ) const

Number of lines (rows) in the output image.

Returns
The height of the output

Definition at line 122 of file ImageExporter.cpp.

Referenced by Isis::QtExporter::checkDataSize(), Isis::QtExporter::setGrayscale(), Isis::QtExporter::setRgb(), Isis::QtExporter::setRgba(), Isis::JP2Exporter::write(), and Isis::TiffExporter::write().

◆ operator()()

void Isis::ImageExporter::operator() ( vector< Buffer *> &  in) const

The method for writing a line of input image data (with potentially several bands representing color channels) to the output image.

It is called for each line of data in the input images (provides a vector containing the same line from each single-band input image). Enables the exporter to be used as a functor in a custom ProcessExport routine, bypassing the black-box write() method entirely.

Parameters
inVector containing a line of input data from each input channel

Definition at line 78 of file ImageExporter.cpp.

◆ outputPixelValue()

int Isis::ImageExporter::outputPixelValue ( double  dn) const
protectedvirtual

Return the output clamped integer pixel value from the input double-precision DN.

Parameters
dnThe input DN
Returns
The pixel value for the output

Definition at line 319 of file ImageExporter.cpp.

Referenced by Isis::StreamExporter::writeGrayscale(), Isis::QtExporter::writeGrayscale(), Isis::StreamExporter::writeRgb(), Isis::QtExporter::writeRgb(), Isis::StreamExporter::writeRgba(), and Isis::QtExporter::writeRgba().

◆ pixelType()

PixelType Isis::ImageExporter::pixelType ( ) const
protected

Returns the pixel type.

Defaults to None if not set by the user.

Returns
The pixel type: {None, UnsignedByte, SignedWord, UnsignedWord}

Definition at line 301 of file ImageExporter.cpp.

Referenced by Isis::JP2Exporter::createBuffer(), Isis::TiffExporter::createBuffer(), Isis::JP2Exporter::setBuffer(), Isis::TiffExporter::setBuffer(), Isis::JP2Exporter::write(), Isis::TiffExporter::write(), and Isis::JP2Exporter::writeLine().

◆ process()

ProcessExport & Isis::ImageExporter::process ( ) const
protected

Get a reference to the process object, useful for subclasses to access and manipulate the process.

Returns
A reference to the process object

Definition at line 291 of file ImageExporter.cpp.

◆ samples()

int Isis::ImageExporter::samples ( ) const

◆ setExportDescription()

void Isis::ImageExporter::setExportDescription ( ExportDescription desc)
protected

Sets the description for the output image.

Parameters
descThe export description

Definition at line 211 of file ImageExporter.cpp.

◆ setExtension()

void Isis::ImageExporter::setExtension ( QString  extension)
protected

Sets the extension for the output image and generates the extension for the world file from it.

Parameters
extensionThe extension for the output image

Definition at line 187 of file ImageExporter.cpp.

Referenced by Isis::JP2Exporter::JP2Exporter(), Isis::QtExporter::QtExporter(), and Isis::TiffExporter::TiffExporter().

◆ setGrayscale()

virtual void Isis::ImageExporter::setGrayscale ( ExportDescription desc)
pure virtual

Pure virtual method for setting up an export to a grayscale image.

Parameters
descThe description describing the export parameters

Implemented in Isis::QtExporter, and Isis::StreamExporter.

◆ setOutputPixelRange()

void Isis::ImageExporter::setOutputPixelRange ( double  outputPixelMinimum,
double  outputPixelMaximum 
)

Set the DN floor and ceiling for the exported image.

All DNs less than the min will be set to the min in the exported image. Similarly, all DNs greater than the max will be set to the max in the exported image.

Note: These values may be "special". For example, if Null pixels are exported to 0.0 and the minimum valid pixels are exported to 2.0, then 0.0 should be passed in for the value of the min parameter.

Parameters
minThe absolute minimum output DN value.
maxThe absolute maximum output DN value.

Definition at line 175 of file ImageExporter.cpp.

◆ setRgb()

virtual void Isis::ImageExporter::setRgb ( ExportDescription desc)
pure virtual

Pure virtual method for setting up an export to an RGB image.

Parameters
descThe description describing the export parameters

Implemented in Isis::QtExporter, and Isis::StreamExporter.

◆ setRgba()

virtual void Isis::ImageExporter::setRgba ( ExportDescription desc)
pure virtual

Pure virtual method for setting up an export to an RGBA image.

Parameters
descThe description describing the export parameters

Implemented in Isis::QtExporter, and Isis::StreamExporter.

◆ write()

void Isis::ImageExporter::write ( FileName  outputName,
int  quality = 100,
QString  compression = "none" 
)
virtual

Export the Isis cube channels to the given standard image.

If supported by the specific exporter child, will also produce an image with the given scaled quality. Will also use the selected compression algorithm if supported by the image format. This will do a black-box export using a ProcessExport routine. After the export is completed, a world file will also be created if a map projection exists.

Parameters
outputNameThe filename of the output cube
qualityThe quality of the output from 0 to 100, defaults to 100
compressionThe compression algorithm used. Image format specific.

Reimplemented in Isis::QtExporter, Isis::TiffExporter, and Isis::JP2Exporter.

Definition at line 95 of file ImageExporter.cpp.

References Isis::FileName::addExtension(), and Isis::ProcessExport::SetInputRange().

Referenced by Isis::JP2Exporter::write(), Isis::TiffExporter::write(), and Isis::QtExporter::write().

◆ writeGrayscale()

virtual void Isis::ImageExporter::writeGrayscale ( vector< Buffer *> &  in) const
protectedpure virtual

Pure virtual method for writing a line of grayscale data to the output image.

Parameters
inVector containing a single grayscale input line

Implemented in Isis::QtExporter, and Isis::StreamExporter.

Referenced by initializeProcess().

◆ writeRgb()

virtual void Isis::ImageExporter::writeRgb ( vector< Buffer *> &  in) const
protectedpure virtual

Pure virtual method for writing a line of RGB data to the output image.

Parameters
inVector containing three input lines (red, green, blue)

Implemented in Isis::QtExporter, and Isis::StreamExporter.

Referenced by initializeProcess().

◆ writeRgba()

virtual void Isis::ImageExporter::writeRgba ( vector< Buffer *> &  in) const
protectedpure virtual

Pure virtual method for writing a line of RGBA data to the output image.

Parameters
inVector containing four input lines (red, green, blue, alpha)

Implemented in Isis::QtExporter, and Isis::StreamExporter.

Referenced by initializeProcess().

Member Data Documentation

◆ m_bands

int Isis::ImageExporter::m_bands
private

Number of bands (channels) in the output image.

Definition at line 178 of file ImageExporter.h.

◆ m_exportDescription

ExportDescription* Isis::ImageExporter::m_exportDescription
private

! The description for the export.

This includes, pixel type, number of channels, and the output values for min valid, max valid, and special pixels

Definition at line 191 of file ImageExporter.h.

◆ m_extension

QString Isis::ImageExporter::m_extension
private

Extension to append to the output image if not already provided.

Definition at line 166 of file ImageExporter.h.

◆ m_lines

int Isis::ImageExporter::m_lines
private

Number of lines (rows) in the output image.

Definition at line 175 of file ImageExporter.h.

◆ m_outputPixelMaximum

double Isis::ImageExporter::m_outputPixelMaximum
private

! The absolute maximum value for the output pixels.

Larger DNs will be mapped to this value.

Definition at line 186 of file ImageExporter.h.

◆ m_outputPixelMinimum

double Isis::ImageExporter::m_outputPixelMinimum
private

! The absolute minimum value for the output pixels.

Smaller DNs will be mapped to this value.

Definition at line 182 of file ImageExporter.h.

◆ m_process

ProcessExport* Isis::ImageExporter::m_process
private

The object that feeds lines to this instance and handles stretching.

Definition at line 160 of file ImageExporter.h.

◆ m_samples

int Isis::ImageExporter::m_samples
private

Number of samples (columns) in the output image.

Definition at line 172 of file ImageExporter.h.

◆ m_worldExtension

QString Isis::ImageExporter::m_worldExtension
private

Extension to append to the output world file.

Definition at line 169 of file ImageExporter.h.

◆ m_writeMethod

WriteChannels Isis::ImageExporter::m_writeMethod
private

Method pointer to one of the pure virtual write methods.

Definition at line 163 of file ImageExporter.h.


The documentation for this class was generated from the following files: