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

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 image width x image height x 4 bytes of RAM, and it needs to be combined with the ref:image-caching feature to ensure that the memory usage is within a reasonable range.

Example

Open a PNG image from file

#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
#!/opt/bin/lv_micropython -i
import lvgl as lv
import display_driver
import fs_driver

fs_drv = lv.fs_drv_t()
fs_driver.fs_register(fs_drv, 'S')

image = lv.image(lv.screen_active())
image.set_src("S:png_demo.png")
image.center()

API

libpng