iipsrv 1.3
iipsrv is an advanced high-performance feature-rich image server for web-based streamed viewing and zooming of ultra high-resolution images
Compressor Class Reference

Base class for IIP output images. More...

#include <Compressor.h>

Inheritance diagram for Compressor:
AVIFCompressor JPEGCompressor PNGCompressor TIFFCompressor WebPCompressor

Public Member Functions

 Compressor (int compressionLevel)
 Constructor.
 
unsigned int getHeaderSize () const
 Return the image header size.
 
unsigned char * getHeader ()
 Return a pointer to the image header itself.
 
int getQuality () const
 Get the current quality level.
 
bool defaultQuality () const
 Check whether we are using the default or whether user has requested a specific quality level.
 
void setResolution (float x, float y, int units)
 Set the physical output resolution.
 
void embedICCProfile (const bool embed)
 Embed ICC profile.
 
void embedXMPMetadata (const bool embed)
 Embed XMP metadata.
 
void embedExifMetadata (const bool embed)
 Embed EXIF metadata.
 
void setMetadata (const std::map< const std::string, const std::string > &metadata)
 Set general metadata.
 
virtual void setQuality (int quality)
 Set quality level.
 
virtual void InitCompression (const RawTile &rawtile, unsigned int strip_height)
 Initialise strip based compression.
 
virtual unsigned int CompressStrip (unsigned char *s, unsigned char *o, unsigned int tile_height)
 Compress a strip of image data.
 
virtual unsigned int Finish (unsigned char *output)
 Finish the strip based compression and free memory.
 
virtual unsigned int Compress (RawTile &t)
 Compress an entire buffer of image data at once in one command.
 
virtual const char * getMimeType () const
 Get mime type.
 
virtual const char * getSuffix () const
 Get file suffix.
 
virtual ImageEncoding getImageEncoding () const
 Get compression type.
 
virtual void injectMetadata (RawTile &t)
 Inject metadata into raw bitstream.
 

Protected Member Functions

virtual void writeMetadata ()
 Write metadata.
 
virtual void writeResolution ()
 Write DPI.
 
virtual void writeICCProfile ()
 Write ICC profile.
 
virtual void writeXMPMetadata ()
 Write XMP metadata.
 
virtual void writeExifMetadata ()
 Write EXIF metadata.
 

Protected Attributes

int Q
 Quality or compression level for all image types.
 
bool default_quality
 Whether compression level is default or has been set manually.
 
unsigned char * header
 Pointer to the header data for the output image.
 
unsigned int header_size
 Size of the header data.
 
int dpi_units
 Physical resolution units: 0 for unknown, 1 for dots/inch or 2 for dots/cm.
 
float dpi_x
 Physical resolution (pixels per physical unit) for X direction.
 
float dpi_y
 Physical resolution (pixels per phyisical unit) in Y direction.
 
std::map< const std::string, const std::string > metadata
 Metadata.
 
std::string icc
 ICC Profile.
 
bool embedICC
 Whether ICC profile should be embedded.
 
std::string xmp
 XMP metadata.
 
bool embedXMP
 Whether XMP metadata should be embedded.
 
std::string exif
 EXIF metadata.
 
bool embedEXIF
 Whether EXIF metadata should be embedded.
 

Detailed Description

Base class for IIP output images.

Constructor & Destructor Documentation

◆ Compressor()

Compressor::Compressor ( int  compressionLevel)
inline

Constructor.

Parameters
compressionLeveldefault compression level for codec

Member Function Documentation

◆ Compress()

virtual unsigned int Compressor::Compress ( RawTile t)
inlinevirtual

Compress an entire buffer of image data at once in one command.

Parameters
ttile of image data
Returns
number of bytes used

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by TileManager::getTile(), and JTL::send().

◆ CompressStrip()

virtual unsigned int Compressor::CompressStrip ( unsigned char *  s,
unsigned char *  o,
unsigned int  tile_height 
)
inlinevirtual

Compress a strip of image data.

Parameters
ssource image data
ooutput buffer
tile_heightpixel height of the tile we are compressing
Returns
number of bytes used for strip

Reimplemented in JPEGCompressor, AVIFCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by CVT::send().

◆ embedExifMetadata()

void Compressor::embedExifMetadata ( const bool  embed)
inline

Embed EXIF metadata.

Parameters
embedWhether EXIF metadata should be embedded

Referenced by CVT::send().

◆ embedICCProfile()

void Compressor::embedICCProfile ( const bool  embed)
inline

Embed ICC profile.

Parameters
embedWhether ICC profile should be embedded

Referenced by CVT::send(), and JTL::send().

◆ embedXMPMetadata()

void Compressor::embedXMPMetadata ( const bool  embed)
inline

Embed XMP metadata.

Parameters
embedWhether XMP metadata should be embedded

Referenced by CVT::send().

◆ Finish()

virtual unsigned int Compressor::Finish ( unsigned char *  output)
inlinevirtual

Finish the strip based compression and free memory.

Parameters
outputoutput buffer
Returns
size of output generated in bytes

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by CVT::send().

◆ getHeader()

unsigned char * Compressor::getHeader ( )
inline

Return a pointer to the image header itself.

Returns
binary header blob

References header.

Referenced by JPEGCompressor::injectMetadata(), and CVT::send().

◆ getHeaderSize()

unsigned int Compressor::getHeaderSize ( ) const
inline

Return the image header size.

Returns
header size in bytes

References header_size.

Referenced by JPEGCompressor::injectMetadata(), and CVT::send().

◆ getImageEncoding()

virtual ImageEncoding Compressor::getImageEncoding ( ) const
inlinevirtual

Get compression type.

Returns
compressionType

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

◆ getMimeType()

virtual const char * Compressor::getMimeType ( ) const
inlinevirtual

Get mime type.

Returns
IANA mime type as const char*

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by CVT::send(), and JTL::send().

◆ getSuffix()

virtual const char * Compressor::getSuffix ( ) const
inlinevirtual

Get file suffix.

Returns
suffix as const char*

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by CVT::send().

◆ InitCompression()

virtual void Compressor::InitCompression ( const RawTile rawtile,
unsigned int  strip_height 
)
inlinevirtual

Initialise strip based compression.

If we are doing a strip based encoding, we need to first initialise with InitCompression, then compress a single strip at a time using CompressStrip and finally clean up using Finish

Parameters
rawtiletile containing the image to be compressed
strip_heightpixel height of the strip we want to compress

Reimplemented in AVIFCompressor, JPEGCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.

Referenced by CVT::send().

◆ injectMetadata()

virtual void Compressor::injectMetadata ( RawTile t)
inlinevirtual

Inject metadata into raw bitstream.

Parameters
timage tile containing raw bitstream

Reimplemented in JPEGCompressor, and WebPCompressor.

◆ setMetadata()

void Compressor::setMetadata ( const std::map< const std::string, const std::string > &  metadata)
inline

Set general metadata.

Parameters
metadataMetadata list

References exif, icc, metadata, and xmp.

Referenced by CVT::send(), and JTL::send().

◆ setQuality()

virtual void Compressor::setQuality ( int  quality)
inlinevirtual

Set quality level.

Parameters
qualityquality level

Reimplemented in JPEGCompressor, AVIFCompressor, PNGCompressor, TIFFCompressor, and WebPCompressor.


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