img_load_resize_file()

Updated: May 06, 2022

Decode and resize a frame from a file on the filesystem

Synopsis:

#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 );

Arguments:

ilib
A handle for the image library, returned by img_lib_attach().
path
The full path to the file from which the data can be read.
callouts
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.
img
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.

Note: 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.

Library:

libimg

Use the -l img option to qcc to link against this library.

Description:

This function decodes a frame from a file on the filesystem, and optionally resizes it if the image width and height are specified. This function decodes only the first frame encountered.

If you don't specify the height and width of your image before calling this function, the Image library sets the height and width to the original size of the image. An application can choose to resize the image when its callout, choose_format_f callback, is called.

At least these callouts are supported:

Returns:

IMG_ERR_OK
Success
IMG_ERR_CORRUPT
Invalid data encountered in the file, preventing the decoding from proceeding. Some of the frame may be intact.
IMG_ERR_DLL
An error occurred processing the DLL that handles the file type. Check to make sure that the DLL is not missing or corrupt.
IMG_ERR_FILE
Error accessing path (errno is set).
IMG_ERR_FORMAT
No appropriate codec could be found. The codec you require could be missing or corrupt, or the file could be corrupt.
IMG_ERR_INTR
Decoding was interrupted by application.
IMG_ERR_MEM
Memory-allocation failure.
IMG_ERR_NODATA
No frame data was present. This error is highly unlikely, as files generally contain at least one frame.
IMG_ERR_NOSUPPORT
Output data not supported; the codec and application could not agree on an output format.
IMG_ERR_TRUNC
Premature end of file encountered. Some of the frame may be intact.

Classification:

Image library

Safety:  
Interrupt handler No
Signal handler No
Thread No