[English]

libpng decoder(libpng解码器)

显示原文

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


libpng 是官方的 PNG 参考库。它支持几乎所有 PNG 功能,可扩展,并且已经过超过 28 年的广泛测试。

详细介绍:http://www.libpng.org/pub/png/libpng.html

Install(安装)

sudo apt install libpng-dev

Add libpng to your project(将libpng加入你的项目)

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.


lv_conf.h 中启用 LV_USE_LIBPNG

请参阅以下示例。

应该注意,这个解码器的每个图象需要消耗 宽x高x4 字节的RAM,

它需要与 Image caching(图片缓存) 功能相结合,以确保内存使用在合理的范围内。

解码后的图像以RGBA像素格式存储。

Example

[English]

Open a PNG image from file and variable

#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_IMAGE_DECLARE(img_png_demo);
    lv_obj_t * img;

    img = lv_image_create(lv_screen_active());
    lv_image_set_src(img, &img_png_demo);
    lv_obj_align(img, LV_ALIGN_LEFT_MID, 10, 0);

    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_align(img, LV_ALIGN_RIGHT_MID, -10, 0);
}

#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

API

libpng decoder(libpng解码器)

lv_libpng.h