libpng decoder
libpng is the official PNG reference library. It supports almost all PNG features, is extensible, and has been extensively tested for over 28 years.
Detailed introduction: http://www.libpng.org/pub/png/libpng.html
Install
sudo apt install libpng-dev
Add libpng to your project
find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PNG_LIBRARIES})
Usage
Enable LV_USE_LIBPNG
in lv_conf.h
.
See the examples below.
It should be noted that each image of this decoder needs to consume width x height x 4
bytes of RAM,
and it needs to be combined with the Image caching feature to ensure that the memory usage is within a reasonable range.
The decoded image is stored in RGBA pixel format.
Example
Open a PNG image from file
C code
View on GitHub#include "../../lv_examples.h"
#if LV_BUILD_EXAMPLES
#if LV_USE_LIBPNG
/**
* Open a PNG image from a file
*/
void lv_example_libpng_1(void)
{
lv_obj_t * img;
img = lv_image_create(lv_screen_active());
/* Assuming a File system is attached to letter 'A'
* E.g. set LV_USE_FS_STDIO 'A' in lv_conf.h */
lv_image_set_src(img, "A:lvgl/examples/libs/libpng/png_demo.png");
lv_obj_center(img);
}
#else
void lv_example_libpng_1(void)
{
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "LibPNG is not installed");
lv_obj_center(label);
}
#endif
#endif