我们都知道,我们是通过framebuffer来显示图片的,但是我们有不能直接把png图片显示到framebuffer,因为framebuffer是不能直接识别png图片的。
我们如何把一个1.png图片转换为framebuffer需要的格式呢?
1. 了解framebuffer的大小
# cat /sys/class/graphics/fb0/window_axis
0 0 1919 1079
我们查看fb0是1920*1080的大小
2. 查看需要显示的图片的大小及位数
32 bit的 500 x 333 的图片
3. 把图片转换为framebuffer的格式
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "png.h"
static int open_png(const char* name,
png_structp* png_ptr,
png_infop* info_ptr,
png_uint_32* width,
png_uint_32* height,
png_byte* channels){
unsigned char header[8];
size_t bytesRead;
int result = 0;
FILE* fp = NULL;
//png_structp png_ptr = NULL;
//png_infop info_ptr = NULL;
int color_type, bit_depth;
//png_uint_32 width;
//png_uint_32 height;
//png_byte c