Decode and resize a frame from a file on the filesystem
#include <img/img.h> int img_load_resize_file( img_lib_t ilib, const char *path, const img_decode_callouts_t *callouts, img_t *img );
- A handle for the image library, returned by img_lib_attach().
- The full path to the file from which the data can be read.
- A pointer to an img_decode_callouts_t structure that provides system callouts for the decoder. If you specify NULL for this value, a set of default callouts is supplied.
- The address of an img_t structure the function fills in with information about the decoded frame.
If you set the image width and height (img.w and img.h) before calling this function, then the image is sized to fit the specified dimensions rather than clipped, as it is with img_load_file(). The resizing is performed on-the-fly during the decoding, without incurring the memory penalty of loading the entire original image and then subsequently resizing it.
If you specify only one of the dimensions, then the other is calculated based on the aspect ratio of the original image.You need to also set the corresponding dimension flag in the img structure. For example, if you specify the width, you need to set the IMG_W bit in flags.
Use the -l img option to qcc to link against this library.
This function decodes a frame from a file on the filesystem, and optionally resizes it if the image width and height is specified. This function decodes only the first frame encountered.
At least these callouts are supported:
- Invalid data encountered in the file, preventing the decoding from proceeding. Some of the frame may be intact.
- An error occurred processing the DLL that handles the file type. Check to make sure that the DLL is not missing or corrupt.
- Error accessing path (errno is set).
- No appropriate codec could be found. The codec you require could be missing or corrupt, or the file could be corrupt.
- Decoding was interrupted by application.
- Memory-allocation failure.
- No frame data was present. This error is highly unlikely, as files generally contain at least one frame.
- Output data not supported; the codec and application could not agree on an output format.
- Premature end of file encountered. Some of the frame may be intact.