浅谈一下pnglib的使用和移植(基于anyka平台)

本文介绍了pnglib库在C语言环境下的png操作,重点讨论了pnglib在anyka3660平台的移植过程,包括依赖zlib库、修改pngconf.h、pngmem.c和pngrio.c文件以适配目标平台的文件系统和内存分配接口。移植过程中涉及fopen、fclose等API的替换,以及malloc、free的替换为平台特定的内存管理函数。

    pnglib库很好的支持了C语言模式下对png操作的支持,而且使用过程也比较简单,移植过程遇到的问题也不是很大。在这里简单的谈一下pnglib库的使用和移植,如果有错误的地方希望各位挨踢人士指出。
现在最新的pnglib库的版本是1.5.7,可以从官网下载http://www.libpng.org/pub/png/libpng.html。pnglib库对zlib有依赖,所以在移植pnglib的同时,如果你的平台上面没有zlib,那也必须把zlib一块移植了。我在移植的过程中使用的是pnglib1.5.7和zlib1.2.5 ,这2个版本的库在移植的时候并没有出现不兼容的问题。我使用的平台是安凯的平台,主芯片是anyka3660,主要面向教育方向的消费类产品。考虑到大部分人不是用anyka这个比较不熟悉的平台,我特意在VC6.0上做了移植和测试,测试的结果也是正常可以使用的。而且在VC6.0上移植起来也更为方便。
    在这里先讲一下pnglib的使用,再根据使用过程的具体问题再说说pnglib的移植应该注意的问题。先上一段测试代码先。我会在csdn上将整个测试的VC6.0工程上传。

int m_width = 0, m_height = 0, color_type = 0;
int size = 0, pos = 0, i = 0, j = 0;
unsigned char* bgra = NULL;
png_structp png_ptr = NULL;
png_infop info_ptr = NULL;
png_typep *row_pointers;
FILE *fp;

file = fopen(pngname, "rb");
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,0, 0, 0);
info_ptr = png_create_info_struct(png_ptr);

setj
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值