【转】zlib 与 libpng 的配置与使用 part 2 zlib的安装

单机多环境部署apollo 2.3.0 理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在 阅读详情

zlib 的安装

libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作。libpng 使用 zlib 程序库作为压缩引擎,zlib 也是著名的 gzip (GNU zip) 所采用的压缩引擎。

我们首先安装zlib,从其官方网站下载最新的源程序,不妨假设文件名是zlib-1.1.4.tar.gz。网址:http://www.gzip.org/zlib/。

在 D:/ 建立 libpng 目录,将 zlib-1.1.4.tar.gz 释放到这个目录。尽管没有合适的makefile,我们仍然可以直接编译链接 zlib.lib:

D:/libpng/zlib-1.1.4>bcc32 -c -O2 -6 -w-8004 -w-8057 -w-8012 *.c

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

adler32.c:

compress.c:

crc32.c:

deflate.c:

example.c:

gzio.c:

infblock.c:

infcodes.c:

inffast.c:

inflate.c:

inftrees.c:

infutil.c:

maketree.c:

minigzip.c:

trees.c:

uncompr.c:

zutil.c:

 

D:/libpng/zlib-1.1.4>tlib zlib.lib +adler32.obj +compress.obj +crc32.obj

+deflate.obj +gzio.obj +infblock.obj +infcodes.obj +inffast.obj

+inflate.obj +inftrees.obj +infutil.obj +maketree.obj +trees.obj

+uncompr.obj +zutil.obj

TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation

注意,在 tlib 的命令行中,没有 example.obj 和 minigzip.obj。接下来,测试 zlib.lib 是否编译成功,执行:

D:/libpng/zlib-1.1.4>bcc32 minigzip.obj zlib.lib

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

 

D:/libpng/zlib-1.1.4>bcc32 example.obj zlib.lib

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

 

D:/libpng/zlib-1.1.4>example

uncompress(): hello, hello!

gzread(): hello, hello!

gzgets() after gzseek: hello!

inflate(): hello, hello!

large_inflate(): OK

after inflateSync(): hello, hello!

inflate with dictionary: hello, hello!

执行 example.exe,看见“hello, hello!”,表明生成的 zlib.lib 是好的。

zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性(integrity)。zlib 也支持读写 gzip (.gz) 格式的文件。下面介绍两个最有用的函数——compress 和 uncompress。

 

int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

compress函数将 source 缓冲区中的内容压缩到 dest 缓冲区。 sourceLen 表示source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen表示 dest 缓冲区的大小,destLen > (sourceLen + 12)*100.1%。当函数退出后,destLen 表示压缩后缓冲区的实际大小。此时 destLen / sourceLen 正好是压缩率。

compress 若成功,则返回 Z_OK;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回 Z_BUF_ERROR。

 

int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

uncompress 函数将 source 缓冲区的内容解压缩到 dest 缓冲区。sourceLen 是 source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen 表示 dest 缓冲区的大小, dest 缓冲区要足以容下解压后的数据。在进行解压缩时,需要提前知道被压缩的数据解压出来会有多大。这就要求在进行压缩之前,保存原始数据的大小(也就是解压后的数据的大小)。这不是 zlib 函数库的功能,需要我们做额外的工作。当函数退出后, destLen 是解压出来的数据的实际大小。

uncompress 若成功,则返回 Z_OK ;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回 Z_BUF_ERROR。若输入数据有误,则返回 Z_DATA_ERROR。

zlib 带的 example.c 是个很好的学习范例,值得一观。我们写个程序,验证 zlib 的压缩功能。所写的测试程序保存为 testzlib.cpp ,放在 zlib-1.1.4 目录下。程序源代码:

// testzlib.cpp  简单测试 zlib 的压缩功能

#include <cstring>

#include <cstdlib>

#include <iostream>

#include "zlib.h"

 

using namespace std;

 

int main()

{

    int err;

    Byte compr[200], uncompr[200];    // big enough

    uLong comprLen, uncomprLen;

    const char* hello = "12345678901234567890123456789012345678901234567890";

 

    uLong len = strlen(hello) + 1;

    comprLen  = sizeof(compr) / sizeof(compr[0]);

 

    err = compress(compr, &comprLen, (const Bytef*)hello, len);

 

    if (err != Z_OK) {

        cerr << "compess error: " << err << '/n';

        exit(1);

    }

    cout << "orignal size: " << len

         << " , compressed size : " << comprLen << '/n';

 

    strcpy((char*)uncompr, "garbage");

 

    err = uncompress(uncompr, &uncomprLen, compr, comprLen);

 

    if (err != Z_OK) {

        cerr << "uncompess error: " << err << '/n';

        exit(1);

    }

    cout << "orignal size: " << len

         << " , uncompressed size : " << uncomprLen << '/n';

 

    if (strcmp((char*)uncompr, hello)) {

        cerr << "BAD uncompress!!!/n";

        exit(1);

    } else {

        cout << "uncompress() succeed: /n" << (char *)uncompr;

    }

}

编译执行这个程序,输出应该是

D:/libpng/zlib-1.1.4>bcc32 testzlib.cpp zlib.lib

 

D:/libpng/zlib-1.1.4>testzlib

orignal size: 51 , compressed size : 22

orignal size: 51 , uncompressed size : 51

uncompress() succeed:

12345678901234567890123456789012345678901234567890

 

至此, zlib的安装任务算是完成了。为了以后使用方便,我将zlib.lib、zlib.h、zconf.h拷贝到D:/mylibs/。

Realsense D435i运行ORB-SLAM3 【代码】Realsense D435i运行ORB-SLAM3。 阅读详情

相关推荐

基于CLICKHOUSE的数据仓库分层规范

接入层。

zjyy1987的博客 769

zlib 与 libpng 的配置与使用 part1

zlib 与 libpng 的配置与使用Solstice  2003/04/3说明:本文节选自我主页上的一篇文章,原文介绍了1) Wave 文件的格式、2)读取 Wave 文件内容,并显示文件的基本信息、3)压缩库 zlib 的安装与简单应用、4)PNG 库 libpng 的安装、5)使用 libpng 生成 PNG 文件、6)绘制 Wave 文件的波形,这里只截取3、4、5这三部分内容。

陈硕的Blog 6297

移动机器人底盘-四轮差速模型(四轮独立)

对于底盘的前轮和后轮来说,其速度是同步的,那么在理想条件下,可以将底盘运动视为以ICR为圆心做圆周运动,对于四个轮子来说,圆周运动的角速度是一致的,圆周运动圆心ICR始终位于底盘几何中心COG的y轴延长线上,ICR与COG之间的距离。有关,整个底盘的速度位于速度瞬心COM处,用。四轮差速底盘设定左轮、右轮得速度分别为。圆周运动的角速度公式如式1所示。受约束,约束与圆周运动的角速度。合成,设四个轮子的速度分别为。,设左轮和右轮之间的轴距为。为圆周运动角速度,线速度为。,其均由预设目标速度。

Moresweet 猫甜 1万+

zlib 与 libpng 的配置与使用 part 2 zlib的安装

zlib 的安装libpng 是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作。libpng 使用 zlib 程序库作为压缩引擎,zlib 也是著名的 gzip (GNU zip) 所采用的压缩引擎。我们首先安装zlib,从其官方网站下载最新的源程序,不妨假设文件名是zlib-1.1.4.tar.gz。网址:http://www.gzip.org/zlib/。

陈硕的Blog 1万+

PTC-6-2004汽轮机性能计算源代码,pycharm-包括试验计算、一类修正、二类修正-以CC350-16.7/0.98/0.5/538/538型汽轮机为例,5万7千字,过程不易欢迎打赏

汽轮机性能计算完整源代码-简化试验-包括试验计算一类修正计算和二类修正计算目录图 1 工程结构。

weixin_43441028的博客 992

低成本实现webhook接收端[python]

Webook本质上也是API,只不过是反向调用,即前端不主动发送请求,完全由后端推送。简单来说,Webhook是一个接受HTTP POST或是GET,PUT,DELETE的URL,一个实现了Webhook的API提供商就是在当事件发生的时候会向配置的URL发送信息,与请求-响应式不同,使用Webhook可以实时接收到变化。Ps:Webhook可能会发出大量的请求,确保接受的URL不被泄露或者应用能及时处理这些请求。

锡城小凯的博客 1万+

安装libpng的时候需要依赖zlib库

安装libpng需要依赖zlib库,在安装完zlib之后,配置libpng的时候输入下列命令: ./configure --host=arm-linux --prefix=$PWD/temp_install LIBS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include 其中LIBS和CPPFLAGS为zlib所在库和头文件的位置 ...

天天想吃肉 1336

获取B站某用户更多的关注数和粉丝数

获取B站某用户更多的关注数和粉丝数 相关记录 一、 前言 B 站最多只能翻 5 页用户的关注数和粉丝数,如何能够看到更多呢。 方法我也是从网上翻来的,记载博客里,算是我研究过这个话题了。 二、需要的东西 关注数的 api https://api.bilibili.com/x/relation/followings?vmid=2884629&pn=1&ps=20&order=desc&jsonp=jsonp 关注者(粉丝)的 api https://api.bilibili.

Enderman_xiaohei的博客 4817

zlib库 安装与使用

1. zlib简介   zlib 适用于数据压缩的函式库,由Jean-loup Gailly (负责compression)和 Mark Adler (负责decompression)开发。    zlib被设计成一个免费的、通用的、法律上不受阻碍(即没有被任何专利覆盖) 的无损数据压缩库。zlib几乎适用于任何计算器硬件和操作系统。   zlib本身的数据格式可以进行跨平台的移植。 与在U

Windeal 5万+

【MCU开发规范】:车载MCU开发规范

车载MCU开发规范

1047

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 280

Linux学习-80-zlib、libpng和jpeg6安装过程

Linux学习-80-zlib、libpng和jpeg6安装过程

时光 1045

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片

libpng 的安装接下来,安装 libpng 的过程要稍微轻松些。先下载最新的 libpng 程序库源文件。网址是http://sourceforge.net/projects/libpng/或http://www.libpng.org/pub/png/。不妨设下载的文件是 libpng-1.2.5.tar.gz,将这个文件释放到D:/libpng/。修改D:/libpng/libpng

陈硕的Blog 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【转】zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片

libpng 的安装接下来,安装 libpng 的过程要稍微轻松些。先下载最新的 libpng 程序库源文件。网址是http://sourceforge.net/projects/libpng/或http://www.libpng.org/pub/png/。不妨设下载的文件是 libpng-1.2.5.tar.gz,将这个文件释放到D:/libpng/。修改D:/libpng/libpng

code09的专栏 3303

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【转】zlib 与 libpng 的配置与使用 part1

zlib 与 libpng 的配置与使用Solstice  2003/04/3说明:本文节选自我主页上的一篇文章,原文介绍了1) Wave 文件的格式、2)读取 Wave 文件内容,并显示文件的基本信息、3)压缩库 zlib 的安装与简单应用、4)PNG 库 libpng 的安装、5)使用 libpng 生成 PNG 文件、6)绘制 Wave 文件的波形,这里只截取3、4、5这三部分内容。

code09的专栏 458

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 【转】zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
下一篇: 十全大补:CxImage图像处理类库(转)
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值