PNMImageHeader¶
-
class
PNMImageHeader
¶ This is the base class of
PNMImage
, PNMReader, and PNMWriter. It encapsulates all the information associated with an image that describes its size, number of channels, etc; that is, all the information about the image except the image data itself. It’s the sort of information you typically read from the image file’s header.Inheritance diagram
-
enum
ColorType
¶ This enumerated type indicates the number of channels in the image, and also implies an image type. You can treat it either as an integer number of channels or as an enumerated image type.
-
enumerator
CT_invalid
= 0¶
-
enumerator
CT_grayscale
= 1¶
-
enumerator
CT_two_channel
= 2¶
-
enumerator
CT_color
= 3¶
-
enumerator
CT_four_channel
= 4¶
-
enumerator
-
typedef map<PNMImageHeader::PixelSpec, int>
PNMImageHeader
::
HistMap
¶ alias of
map< PixelSpec, int >
-
class
Histogram
¶ Used to return a pixel histogram in PNMImage::get_histogram().
-
Histogram
(void)¶
-
Histogram
(PNMImageHeader::Histogram const&) = default¶
-
int
get_count
(int n) const¶
-
int
get_count
(PNMImageHeader::PixelSpec const &pixel) const¶ Returns the number of occurrences in the image of the nth unique pixel color in the histogram.
Returns the number of occurrences in the image of the indicated pixel color.
-
int
get_num_pixels
(void) const¶ Returns the number of unique pixel colors in the histogram.
-
PNMImageHeader::PixelSpec const &
get_pixel
(int n) const¶ Returns the nth unique pixel color in the histogram. These are ordered by default from most common to least common.
-
void
write
(std::ostream &out) const¶
-
-
typedef pvector<PNMImageHeader::PixelSpec>
PNMImageHeader
::
Palette
¶ alias of
pvector< PixelSpec >
-
typedef pvector<PNMImageHeader::PixelSpecCount>
PNMImageHeader
::
PixelCount
¶ alias of
pvector< PixelSpecCount >
-
class
PixelSpec
¶ Contains a single pixel specification used in compute_histogram() and make_histogram(). Note that pixels are stored by integer value, not by floating-point scaled value.
-
PixelSpec
(xelval gray_value)¶
-
PixelSpec
(xelval gray_value, xelval alpha)¶
-
PixelSpec
(xelval red, xelval green, xelval blue)¶
-
PixelSpec
(xelval red, xelval green, xelval blue, xelval alpha)¶
-
PixelSpec
(PNMImageHeader::PixelSpec const&) = default¶
-
int
compare_to
(PNMImageHeader::PixelSpec const &other) const¶
-
xelval
get_alpha
(void) const¶
-
xelval
get_blue
(void) const¶
-
xelval
get_green
(void) const¶
-
xelval
get_red
(void) const¶
-
void
output
(std::ostream &out) const¶
-
void
set_alpha
(xelval alpha)¶
-
void
set_blue
(xelval blue)¶
-
void
set_green
(xelval green)¶
-
void
set_red
(xelval red)¶
-
-
class
PixelSpecCount
¶ Associates a pixel specification with an appearance count, for use in Histogram, below.
-
PixelSpecCount
(PNMImageHeader::PixelSpecCount const&) = default¶
-
-
PNMImageHeader
(void)¶
-
PNMImageHeader
(PNMImageHeader const ©)¶
-
ColorSpace
get_color_space
(void) const¶ Returns the color space that the image is encoded in, or CS_unspecified if unknown.
-
ColorType
get_color_type
(void) const¶ Returns the image type of the image, as an enumerated value. This is really just the number of channels cast to the enumerated type.
-
std::string
get_comment
(void) const¶ Gets the user comment from the file.
-
xelval
get_maxval
(void) const¶ Returns the maximum channel value allowable for any pixel in this image; for instance, 255 for a typical 8-bit-per-channel image. A pixel with this value is full on.
-
int
get_num_channels
(void) const¶ Returns the number of channels in the image.
-
LVecBase2i
get_size
(void) const¶ Returns the number of pixels in each direction. This is one more than the largest allowable coordinates.
-
PNMFileType *
get_type
(void) const¶ If the file type is known (e.g.
has_type()
returns true), returns itsPNMFileType
pointer; otherwise, returns NULL.
-
int
get_x_size
(void) const¶ Returns the number of pixels in the X direction. This is one more than the largest allowable X coordinate.
-
int
get_y_size
(void) const¶ Returns the number of pixels in the Y direction. This is one more than the largest allowable Y coordinate.
-
bool
has_alpha
(PNMImageHeader::ColorType color_type)¶
-
bool
has_alpha
(void) const¶ This static variant of has_alpha() returns true if the indicated image type includes an alpha channel, false otherwise.
Returns true if the image includes an alpha channel, false otherwise. Unlike
is_grayscale()
, if this returns false it is an error to call any of the functions accessing the alpha channel.
-
bool
has_type
(void) const¶ Returns true if the
PNMImageHeader
knows what type it is, false otherwise.
-
bool
is_grayscale
(PNMImageHeader::ColorType color_type)¶
-
bool
is_grayscale
(void) const¶ This static variant of is_grayscale() returns true if the indicated image type represents a grayscale image, false otherwise.
Returns false if the image is a full-color image, and has red, green, and blue components; true if it is a grayscale image and has only a gray component. (The gray color is actually stored in the blue channel, and the red and green channels are ignored.)
-
PNMReader *
make_reader
(Filename const &filename, PNMFileType *type = nullptr, bool report_unknown_type = true) const¶
-
PNMReader *
make_reader
(std::istream *file, bool owns_file = true, Filename const &filename = Filename(), std::string magic_number = string(), PNMFileType *type = nullptr, bool report_unknown_type = true) const¶ Returns a newly-allocated PNMReader of the suitable type for reading from the indicated image filename, or NULL if the filename cannot be read for some reason. The filename “-” always stands for standard input. If type is specified, it is a suggestion for the file type to use.
The PNMReader should be deleted when it is no longer needed.
Returns a newly-allocated PNMReader of the suitable type for reading from the already-opened image file, or NULL if the file cannot be read for some reason.
owns_file should be set true if the PNMReader is to be considered the owner of the stream pointer (in which case the stream will be deleted on completion, whether successful or not), or false if it should not delete it.
The filename parameter is optional here, since the file has already been opened; it is only used to examine the extension and attempt to guess the file type.
If magic_number is nonempty, it is assumed to represent the first few bytes that have already been read from the file. Some file types may have difficulty if this is more than two bytes.
If type is non-NULL, it is a suggestion for the file type to use.
The PNMReader should be deleted when it is no longer needed.
-
PNMWriter *
make_writer
(Filename const &filename, PNMFileType *type = nullptr) const¶
-
PNMWriter *
make_writer
(std::ostream *file, bool owns_file = true, Filename const &filename = Filename(), PNMFileType *type = nullptr) const¶ Returns a newly-allocated PNMWriter of the suitable type for writing an image to the indicated filename, or NULL if the filename cannot be written for some reason. The filename “-” always stands for standard output. If type is specified, it is a suggestion for the file type to use.
The PNMWriter should be deleted when it is no longer needed.
Returns a newly-allocated PNMWriter of the suitable type for writing to the already-opened image file, or NULL if the file cannot be written for some reason.
owns_file should be set true if the PNMWriter is to be considered the owner of the stream pointer (in which case the stream will be deleted on completion, whether successful or not), or false if it should not delete it.
The filename parameter is optional here, since the file has already been opened; it is only used to examine the extension and attempt to guess the intended file type.
If type is non-NULL, it is a suggestion for the file type to use.
The PNMWriter should be deleted when it is no longer needed.
-
void
output
(std::ostream &out) const¶
-
bool
read_header
(Filename const &filename, PNMFileType *type = nullptr, bool report_unknown_type = true)¶
-
bool
read_header
(std::istream &data, std::string const &filename = string(), PNMFileType *type = nullptr, bool report_unknown_type = true)¶ Opens up the image file and tries to read its header information to determine its size, number of channels, etc. If successful, updates the header information and returns true; otherwise, returns false.
Reads the image header information only from the indicated stream.
The filename is advisory only, and may be used to suggest a type if it has a known extension.
If type is non-NULL, it is a suggestion for the type of file it is (and a non-NULL type will override any magic number test or filename extension lookup).
Returns true if successful, false on error.
-
static bool
read_magic_number
(std::istream *file, std::string &magic_number, int num_bytes)¶ Ensures that the first n bytes of the file are read into magic_number. If magic_number is initially nonempty, assumes these represent the first few bytes already extracted. Returns true if successful, false if an end of file or error occurred before num_bytes could be read.
-
void
set_comment
(std::string const &comment)¶ Writes a user comment string to the image (header).
-
void
set_type
(PNMFileType *type)¶ Sets the file type of this
PNMImage
. This will be the default type used when an image is read, if the type cannot be determined by magic number or inferred by extension, or the type used when the image is written, if the type cannot be inferred from the filename extension.
-
enum