Foxit PDF SDK

Public Types | Public Member Functions | List of all members
foxit::common::Image Class Reference
Inheritance diagram for foxit::common::Image:

## Public Types
enum | Orientation { e_OrientationNone = 0, e_OrientationNormal = 1, e_OrientationFlipH = 2, e_OrientationRotate180 = 3, e_OrientationFlipV = 4, e_OrientationRotate90FlipH = 5, e_OrientationRotate90 = 6, e_OrientationRotate270FlipH = 7, e_OrientationRotate270 = 8 }
| Enumeration for image orientation. More...
enum | Type { e_Unknown = -1, e_None = 0, e_BMP = 1, e_JPG = 2, e_PNG = 3, e_GIF = 4, e_TIF = 5, e_JPX = 6, e_JBIG2 = 8, e_WEBP = 9 }
| Enumeration for image type. More...

## Public Member Functions
| Image ()
| Constructor. More...
| Image (const char *path)
| Constructor, from an existing image file path. More...
| Image (const Image &other)
| Constructor, with another image object. More...
| Image (const void *buffer, size_t length)
| Constructor, from a memory buffer. More...
| Image (const wchar_t *path)
| Constructor, from an existing image file path. More...
| Image (foxit::common::file::ReaderCallback *file_read)
| Constructor, with a file read callback object. More...
| ~Image ()
| Destructor.
bool | AddFrame (const Bitmap &bitmap)
| Add a bitmap as a frame. (Unsupported DIB formats: Bitmap::e_DIBRgb565 and Bitmap::e_DIB8bppMask) More...
Bitmap | GetFrameBitmap (int index) const
| Get a frame bitmap, specified by index. More...
int | GetFrameCount () const
| Get frame count. More...
int | GetHeight () const
| Get image height. More...
Orientation | GetOrientation () const
| Get image orientation. More...
Type | GetType () const
| Get image type. More...
int | GetWidth () const
| Get image width. More...
int | GetXDPI () const
| Get DPI for X-axis. More...
int | GetYDPI () const
| Get DPI for Y-axis. More...
bool | IsEmpty () const
| Check whether current object is empty or not. More...
bool | operator!= (const Image &other) const
| Not equal operator. More...
Image & | operator= (const Image &other)
| Assign operator. More...
bool | operator== (const Image &other) const
| Equal operator. More...
bool | SaveAs (const char *file_path)
| Save current image as an image file. More...
bool | SaveAs (const wchar_t *file_path)
| Save current image as an image file. More...
bool | SaveAs (foxit::common::file::StreamCallback *file, const wchar_t *file_extension)
| Save current image as an image file. More...
void | SetDPIs (int x_dpi, int y_dpi)
| Set DPI for X-axis and Y-axis. More...
Public Member Functions inherited from foxit::Base
FS_HANDLE | Handle () const
| Get the handle of current object. More...

## Detailed Description

Foxit PDF SDK offers following image types:

- BMP: bitmap image format. It only support single frame. Foxit PDF SDK supports to load image from a BMP image file, get some basic information, get its bitmap, change its bitmap and save it as an image file.
- JPG: joint photographic experts group image format. It only support single frame. Foxit PDF SDK supports to load image from a JPG image file, get some basic information, get its bitmap, change its bitmap and save it as an image file.
- PNG: portable network graphics image format. It only support single frame. Foxit PDF SDK supports to load image from a PNG image file, get some basic information, get its bitmap, change its bitmap and save it as an image file.
- GIF: graphics interchange format. It supports multiple frames. Foxit PDF SDK supports to load image from a GIF image file, get its size, get its bitmap, change its bitmap and save it as an image file.
- TIF: tagged image file format. It supports multiple frames. Foxit PDF SDK supports to load image from a TIF image file, get some basic information, get its bitmap, change its bitmap and save it as an image file.
- JPX: JPEG-2000 image format. It only support single frame. Foxit PDF SDK supports to load image from a JPX image file, get its size, get its bitmap, change its bitmap and save it as an image file.
- JBIG2: JBIG2 image format. It only support single frame. Foxit PDF SDK supports to load image from a JBIG2 image file, get its size, and save it as an image file. Foxit PDF SDK does not support to get its frame bitmap yet.

## Member Enumeration Documentation

## ◆ Orientation

enum foxit::common::Image::Orientation

Enumeration for image orientation.

Values of this enumeration should be used alone.

Enumerator
e_OrientationNone | No orientation.
e_OrientationNormal | Normal orientation.
e_OrientationFlipH | Flip Horizontal.
e_OrientationRotate180 | Rotate 180 degrees in clockwise direction.
e_OrientationFlipV | Flip Vertical.
e_OrientationRotate90FlipH | First rotate 90 in clockwise direction and then flip horizontal.
e_OrientationRotate90 | Rotate 90 degrees in clockwise direction.
e_OrientationRotate270FlipH | First rotate 90 in counter-clockwise direction and then flip horizontal.
e_OrientationRotate270 | Rotate 90 degrees in counter-clockwise direction.

## ◆ Type

enum foxit::common::Image::Type

Enumeration for image type.

Values of this enumeration should be used alone.

Enumerator
e_Unknown | Unknown image type.
e_None | Not have image type yet. Note This is only for a new image object, which is not constructed from any image file or retrieved from other object.
e_BMP | Image type is BMP.
e_JPG | Image type is JPG or JPEG.
e_PNG | Image type is PNG.
e_GIF | Image type is GIF.
e_TIF | Image type is TIF or TIFF.
e_JPX | Image type is JPX or JPEG-2000.
e_JBIG2 | Image type is JBIG2. Note Currently, only few functions in class Image support this type.
e_WEBP | Image type is webp. Note Currently, unsupported on Android, iOS, linux arm and mac arm platforms.

## Constructor & Destructor Documentation

## ◆ Image() [1/6]

foxit::common::Image::Image | ( |  | ) |

Constructor.

This constructor is to construct a new image object (without any data). The image type of this constructed image object would be Image::e_None.

## ◆ Image() [2/6]

foxit::common::Image::Image | ( | const char * | path | ) |
| explicit

Constructor, from an existing image file path.

Parameters

  [in] | path | A full path of an existing image file. It should not be an empty string.

## ◆ Image() [3/6]

foxit::common::Image::Image | ( | const wchar_t * | path | ) |
| explicit

Constructor, from an existing image file path.

Parameters

  [in] | path | A full path of an existing image file. It should not be an empty string.

## ◆ Image() [4/6]

foxit::common::Image::Image | ( | const void * | buffer,
|  | size_t | length
| ) |  |
| explicit

Constructor, from a memory buffer.

Parameters

  [in] | buffer | A memory buffer. The image file data should be fully loaded in this memory buffer. It should not be NULL.
  [in] | length | The size of memory buffer. It should be above 0.

## ◆ Image() [5/6]

foxit::common::Image::Image | ( | foxit::common::file::ReaderCallback * | file_read | ) |
| explicit

Constructor, with a file read callback object.

Parameters

  [in] | file_read | A common::file::ReaderCallback object which is implemented by user to load an image file. It should not be NULL.

## ◆ Image() [6/6]

foxit::common::Image::Image | ( | const Image & | other | ) |

Constructor, with another image object.

Parameters

  [in] | other | Another image object.

## Member Function Documentation

## ◆ AddFrame()

bool foxit::common::Image::AddFrame | ( | const Bitmap & | bitmap | ) |

Add a bitmap as a frame. (Unsupported DIB formats: Bitmap::e_DIBRgb565 and Bitmap::e_DIB8bppMask)

Currently, this function does not support an image with type Image::e_JBIG2, or Image::e_Unknown .
For supporting image types:

- If current image's type is Image::e_TIF, Image::e_GIF, or Image::e_None, this function will add the new bitmap to be the new last frame.
- If current image's type is one of other types, which only contains single frame, this function will use the new bitmap to replace the first frame.

Parameters

  [in] | bitmap | A valid bitmap as a frame to be added or set.

Returns
  true means success, while false means failure.

## ◆ GetFrameBitmap()

Bitmap foxit::common::Image::GetFrameBitmap | ( | int | index | ) | const

Get a frame bitmap, specified by index.

Currently, this function does not support an image with type Image::e_JBIG2. This function can only support to get a frame bitmap which is in following formats:
Bitmap::e_DIB8bppMask, Bitmap::e_DIB8bpp, Bitmap::e_DIBRgb, Bitmap::e_DIBRgb32, Bitmap::e_DIBArgb.
For other unsupported DIB format, this function will return a bitmap object which's function Bitmap::IsEmpty returns true.

Parameters

  [in] | index | Index of the frame. Valid range: from 0 to (count-1). count is returned by function Image::GetFrameCount.

Returns
  The frame bitmap. If the return value of function Bitmap::IsEmpty for the returned bitmap object is true, that means the frame's DIB format is not supported.

## ◆ GetFrameCount()

int foxit::common::Image::GetFrameCount | ( |  | ) | const

Get frame count.

Currently, this function does not support an image with type Image::e_JBIG2.

Returns
  The frame count.

## ◆ GetHeight()

int foxit::common::Image::GetHeight | ( |  | ) | const

Get image height.

If the image has multiple frames, usually the first frame's size will be treated as the image size.

Returns
  Image height.

## ◆ GetOrientation()

Orientation foxit::common::Image::GetOrientation | ( |  | ) | const

Get image orientation.

This function only support an image with type Image::e_JPG and Image::e_TIF.

Returns
  Image orientation. Please refer to values starting from Image::e_OrientationNone and this would be one of these values.

## ◆ GetType()

Type foxit::common::Image::GetType | ( |  | ) | const

Get image type.

If current image is a new image (not constructed from any image file), its type would be Image::e_None.

Returns
  Image type. Please refer to values starting from Image::e_Unknown and this would be one of these values.

## ◆ GetWidth()

int foxit::common::Image::GetWidth | ( |  | ) | const

Get image width.

If the image has multiple frames, usually the first frame's size will be treated as the image size.

Returns
  Image width..

## ◆ GetXDPI()

int foxit::common::Image::GetXDPI | ( |  | ) | const

Get DPI for X-axis.

Currently, this function does not support an image with type Image::e_JPX, Image::e_GIF or Image::e_JBIG2 or Image::e_WEBP.
For a new image (not constructed from any image file), the default DPI for X-axis is 96.

Returns
  DPI value for X-axis.

## ◆ GetYDPI()

int foxit::common::Image::GetYDPI | ( |  | ) | const

Get DPI for Y-axis.

Currently, this function does not support an image with type Image::e_JPX, Image::e_GIF, Image::e_JBIG2 or Image::e_WEBP.
For a new image (not constructed from any image file), the default DPI for Y-axis is 96.

Returns
  DPI value for Y-axis.

## ◆ IsEmpty()

bool foxit::common::Image::IsEmpty | ( |  | ) | const

Check whether current object is empty or not.

When the current object is empty, that means current object is useless.

Returns
  true means current object is empty, while false means not.

## ◆ operator!=()

bool foxit::common::Image::operator!= | ( | const Image & | other | ) | const

Not equal operator.

Parameters

  [in] | other | Another image object. This function will check if current object is not equal to this one.

Returns
  true means not equal, while false means equal.

## ◆ operator=()

Image& foxit::common::Image::operator= | ( | const Image & | other | ) |

Assign operator.

Parameters

  [in] | other | Another image object, whose value would be assigned to current object.

Returns
  Reference to current object itself.

## ◆ operator==()

bool foxit::common::Image::operator== | ( | const Image & | other | ) | const

Equal operator.

Parameters

  [in] | other | Another image object. This function will check if current object is equal to this one.

Returns
  true means equal, while false means not equal.

## ◆ SaveAs() [1/3]

bool foxit::common::Image::SaveAs | ( | const char * | file_path | ) |

Save current image as an image file.

If the type of current image is Image::e_TIF, Image::e_GIF or Image::e_None, and the saved image file type does not support multiply frames, only the first frame of current image will be saved to the image file.
If the type of the saved image file is Image::e_WEBP, the bitmap format of the current image should be Bitmap::e_DIBRgb, e_DIBRgb32 or Bitmap::e_DIBArgb.
For an image object (not constructed from any image file), please ensure to add at least one valid frame bitmap to the image object before using this function; otherwise this function will fail.

Parameters

  [in] | file_path | A full path of the saved image file. It should not be an empty string. Currently, this function supports following extension names: .bmp, .jpg, .jpeg, .png, .tif, .tiff, .jpx, .jp2, .webp.

Returns
  true means success, while false means failure.

Note
  This function does not support to save current image object just back to the image file which is used to construct current image object. In order to do so, user is recommended to do as following steps:
  Assume that current image object is constructed from an image file named "org.bmp".
  1. Use current function to save current image object to an temporary file. Here, this temporary file is named as "temp.tmp".
  2. Ensure that current image object has destructed.
  3. Remove "org.bmp" and rename "temp.tmp" to "org.bmp".

## ◆ SaveAs() [2/3]

bool foxit::common::Image::SaveAs | ( | const wchar_t * | file_path | ) |

Save current image as an image file.

If the type of current image is Image::e_TIF, Image::e_GIF or Image::e_None, and the saved image file type does not support multiply frames, only the first frame of current image will be saved to the image file.
If the type of the saved image file is Image::e_WEBP, the bitmap format of the current image should be Bitmap::e_DIBRgb, e_DIBRgb32 or e_DIBArgb .
For an image object (not constructed from any image file), please ensure to add at least one valid frame bitmap to the image object before using this function; otherwise this function will fail.

Parameters

  [in] | file_path | A full path of the saved image file. It should not be an empty string. Currently, this function supports following extension names: .bmp, .jpg, .jpeg, .png, .tif, .tiff, .jpx, .jp2.

Returns
  true means success, while false means failure.

Note
  This function does not support to save current image object just back to the image file which is used to construct current image object. In order to do so, user is recommended to do as following steps:
  Assume that current image object is constructed from an image file named "org.bmp".
  1. Use current function to save current image object to an temporary file. Here, this temporary file is named as "temp.tmp".
  2. Ensure that current image object has destructed.
  3. Remove "org.bmp" and rename "temp.tmp" to "org.bmp".

## ◆ SaveAs() [3/3]

bool foxit::common::Image::SaveAs | ( | foxit::common::file::StreamCallback * | file,
|  | const wchar_t * | file_extension
| ) |  |

Save current image as an image file.

If the type of current image is Image::e_TIF, Image::e_GIF or Image::e_None, and the saved image file type does not support multiply frames, only the first frame of current image will be saved to the image file.
If the type of the saved image file is Image::e_WEBP, the bitmap format of the current image should be Bitmap::e_DIBRgb, e_DIBRgb32 or e_DIBArgb .
For an image object (not constructed from any image file), please ensure to add at least one valid frame bitmap to the image object before using this function; otherwise this function will fail.

Parameters

  [in] | file | A file::StreamCallback object which is implemented by user to save image file.
  [in] | file_extension | A full path of the saved image file. It should not be an empty string. Currently, this function supports following extension names: .bmp, .jpg, .jpeg, .png, .tif, .tiff, .jpx, .jp2.

Returns
  true means success, while false means failure.

Note
  This function does not support to save current image object just back to the image file which is used to construct current image object. In order to do so, user is recommended to do as following steps:
  Assume that current image object is constructed from an image file named "org.bmp".
  1. Use current function to save current image object to an temporary file. Here, this temporary file is named as "temp.tmp".
  2. Ensure that current image object has destructed.
  3. Remove "org.bmp" and rename "temp.tmp" to "org.bmp".

## ◆ SetDPIs()

void foxit::common::Image::SetDPIs | ( | int | x_dpi,
|  | int | y_dpi
| ) |  |

Set DPI for X-axis and Y-axis.

Currently, this function does not support an image with type Image::e_JPX, Image::e_GIF, Image::e_JBIG2 or Image::e_WEBP.

Parameters

  [in] | x_dpi | DPI for X-axis. It should be above 0.
  [in] | y_dpi | DPI for Y-axis. It should be above 0.

Returns
  None.