18 #if defined(_MSC_VER) || defined(__MINGW32__) 40 static const char DEFAULT_FILE_NAME[] =
"output.jpg";
41 static const ossim_int32 DEFAULT_JPEG_QUALITY = 100;
42 static ossimTrace traceDebug(
"ossimJpegWriter:debug");
46 theQuality(DEFAULT_JPEG_QUALITY),
47 theOutputFilePtr(NULL)
60 static const char MODULE[] =
"ossimJpegWriter::writeFile";
67 bool bandsDontMatch =
false;
71 if (components != 1 && components != 3)
73 bandsDontMatch =
true;
78 else if(components > 3)
94 << MODULE <<
" ERROR:" 96 <<
"\nReturning from method." << endl;
131 ossim_uint32 buf_size = tileHeight*image_width*outputComponents;
135 <<
"\nbuf_size: " << buf_size
139 std::vector<ossim_uint8> buf(buf_size);
147 std::vector<ossim_uint8> tempBuf;
162 struct jpeg_compress_struct cinfo;
163 struct jpeg_error_mgr jerr;
164 JSAMPROW row_pointer[1];
167 int row_stride = image_width * outputComponents;
169 cinfo.err = jpeg_std_error(&jerr);
170 jpeg_create_compress(&cinfo);
172 cinfo.image_width = image_width;
173 cinfo.image_height = image_height;
174 cinfo.input_components = outputComponents;
177 if (outputComponents == 3)
179 cinfo.in_color_space = JCS_RGB;
183 cinfo.in_color_space = JCS_GRAYSCALE;
186 jpeg_set_defaults(&cinfo);
188 jpeg_start_compress(&cinfo,
TRUE);
195 double tileCount = 0.0;
206 buf_rect.
set_lry(buf_rect.
ul().
y + tileHeight - 1);
222 memcpy(tempTile->
getBuf(),
257 min( (buf_rect.
lr().
y-buf_rect.
ul().
y+1),
264 <<
"buf_rect: " << buf_rect
265 <<
"lines_to_copy: " << lines_to_copy << endl;
272 for (
ossim_int32 line=0; line<lines_to_copy; ++line)
274 row_pointer[0] = &buf[buf_offset];
275 jpeg_write_scanlines(&cinfo, row_pointer, 1);
276 buf_offset += row_stride;
285 jpeg_finish_compress(&cinfo);
291 jpeg_destroy_compress(&cinfo);
299 if(savedInput.
valid())
312 const char* prefix)
const 338 static const char MODULE[] =
"ossimJpegWriter::setQuality";
341 if (quality > 0 && quality < 101)
350 << MODULE <<
" DEBUG:" 351 <<
"\nquality out of range: " << quality
352 <<
"\nquality has been set to default: " 353 << DEFAULT_JPEG_QUALITY
354 <<
"\nvalid range: 1 to 100 with 100 being best." 364 << MODULE <<
" DEBUG:" 365 <<
"\nQuality set to: " 414 if((imageType ==
"image/jpeg")||
415 (imageType ==
"image/jpg"))
425 if ( property.
valid() )
430 property->valueToString(stringValue);
459 propertyNames.push_back(name);
virtual void setProperty(ossimRefPtr< ossimProperty > property)
Will set the property whose name matches the argument "property->getName()".
void set_uly(ossim_int32 y)
virtual void slaveProcessTiles()
virtual void setImageRectangle(const ossimIrect &rect)
virtual ossim_uint32 getTileWidth() const
Returns the default processing tile width.
ossimString theOutputImageType
bool needsAborting() const
virtual bool isMaster() const
Represents serializable keyword/value map.
virtual void setToStartOfSequence()
static const ossimErrorCode OSSIM_OK
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
const char * find(const char *key) const
ossim_int64 getNumberOfTiles() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual ossimRefPtr< ossimImageData > getNextTile(ossim_uint32 resLevel=0)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
ossimIrect theAreaOfInterest
static ossimString toString(bool aValue)
Numeric to string methods.
const ossimIpt & ul() const
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Pushes this's names onto the list of property names.
virtual ossimString getExtension() const
Returns a 3-letter extension from the image type descriptor (theOutputImageType) that can be used for...
Pure virtual base class for image file writers.
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual void initialize()
Initialize the data buffer.
virtual void setQuality(ossim_int32 quality)
Sets the jpeg compression quality.
virtual ossim_uint32 getSizePerBandInBytes() const
Returns the number of bytes in single band of the tile.
ossimConnectableObject * getInput(ossim_uint32 index=0)
returns the object at the specified index.
ossim_int32 toInt32() const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
#define RTTI_DEF1_INST(cls, name, b1)
bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
virtual void setAreaOfInterest(const ossimIrect &areaOfInterest)
virtual ossimScalarType getOutputScalarType() const
This will be used to query the output pixel type of the tile source.
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
void getImageTypeList(std::vector<ossimString>& imageTypeList)const
virtual void setNumericType(ossimNumericPropertyType type)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
ossimRefPtr< ossimImageSourceSequencer > theInputConnection
ossimFilename theFilename
unsigned int ossim_uint32
virtual ossimIrect getImageRectangle() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
const ossimIpt & lr() const
virtual void unloadTile(void *dest, const ossimIrect &dest_rect, ossimInterleaveType il_type) const
virtual ossim_int32 connectMyInputTo(ossimConnectableObject *inputObject, bool makeOutputConnection=true, bool createEventFlag=true)
Will try to connect this objects input to the passed in object.
virtual void initialize()
virtual bool isOpen() const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
virtual void setOrigin(const ossimIpt &origin)
ossim_int64 getNumberOfTilesHorizontal() const
virtual ossim_uint32 getTileHeight() const
Returns the default processing tile height.
virtual void setProperty(ossimRefPtr< ossimProperty > property)
void set_lry(ossim_int32 y)
virtual ossimErrorCode getErrorStatus() const
virtual void setWriteExternalGeometryFlag(bool flag)
virtual const void * getBuf() const
static const char * COMPRESSION_QUALITY_KW
virtual bool writeFile()
Write out the file.
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
virtual void setDataObjectStatus(ossimDataObjectStatus status) const
Full list found in ossimConstants.h.
virtual void setPercentComplete(double percentComplete)
virtual ~ossimJpegWriter()
virtual destructor
ossimJpegWriter()
default constructor
virtual const ossimIpt & getOrigin() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossim_int64 getNumberOfTilesVertical() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
saves the state of the object.
const ossimString & getName() const