• zlib__ZC


    官网:http://www.zlib.net/ ,所有版本下载:http://www.zlib.net/fossils/

    ZC: 我下载的是 zlib-1.2.3.tar.gz 和 zlib-1.2.11.tar.gz(20170626当前最新版)

    ZC: 我是看的一个网上的教程,具体文章不知道是哪个了...

    ZC: zlib-1.2.3.tar.gz的编译方法是 进入目录“...zlib-1.2.3projectsvisualc6”,用VC6打开 zlib.dsw,然后进行编译。最主要需要 这3个文件:zlib.h、zconf.h、zlib.lib 。

    ZC: zlib-1.2.11.tar.gz的编译方法是看了“README”知道的...(方式一):进入目录“...zlib-1.2.11win32”用命令行编译 (方式二):进入目录“...contribvstudio...” 选择对应版本的VS目录 然后进行编译  (我没有实际使用 zlib-1.2.11.tar.gz 进行编译 和 编码...)

    zlib-1.2.3.tar.gz 的 测试使用代码:

    #include <stdio.h>
    #include <windows.h>
    
    #include "zlib.h"
    #pragma comment(lib,"zlib")  
    
    void main()
    {
        HANDLE pfile=::CreateFile("C:\111.bmp",GENERIC_READ,0,NULL,OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS,NULL);//用这个函数比OpenFile好
        if(pfile==INVALID_HANDLE_VALUE)
        {
            MessageBox(NULL,"打开文件失败","Error",MB_OK);
            CloseHandle(pfile);//一定注意在函数退出之前对句柄进行释放。
            return;
        }
        DWORD filesize = GetFileSize(pfile,NULL);
        char* buffer = new char[filesize+1];//最后一位为'/0',C-Style字符串的结束符。
        DWORD readsize = 0;
        ReadFile(pfile,buffer,filesize,&readsize,NULL);
    
        DWORD dwTick1 = ::GetTickCount();
        //printf("filesize : %d, ::GetTickCount() : %d
    ", filesize, dwTick1);
    
    //*
        //压缩  
        BYTE *dest = new BYTE[filesize];
        unsigned long destSize = filesize;
        //Z_OK
        int iRtn = compress(dest, &destSize, (unsigned char*)buffer, filesize);
    //#define Z_BUF_ERROR    (-5)
        printf("iRtn : %d
    ", iRtn);
        printf("destSize : %d, ::GetTickCount() : %d
    ", destSize, ::GetTickCount());
    //*/
    //#define Z_NO_COMPRESSION         0
    //#define Z_BEST_SPEED             1
    //#define Z_BEST_COMPRESSION       9
    //#define Z_DEFAULT_COMPRESSION  (-1)
    
    
    // ***
    //*
        // 解压
        unsigned long nSize = 1024*40000;
        BYTE *target=new BYTE[nSize];
        iRtn = uncompress(target, &nSize, dest, destSize);
    
        printf("iRtn : %d
    ", iRtn);
        printf("nSize : %d, ::GetTickCount() : %d
    ", nSize, ::GetTickCount());
    //*/
    
    //*
        HANDLE pWfile=::CreateFile("C:\z01.bmp",GENERIC_WRITE|GENERIC_READ,0,NULL,CREATE_ALWAYS,
            FILE_ATTRIBUTE_NORMAL,NULL);//用这个函数比OpenFile好
        if(pWfile==INVALID_HANDLE_VALUE)
        {
            //MessageBox(NULL,"打开文件失败","Error",MB_OK);
            CloseHandle(pWfile);//一定注意在函数退出之前对句柄进行释放。
            return;
        }
    
        DWORD writesize = 0;
    
        //::WriteFile(pWfile,buffer,filesize,&writesize,NULL);
        ::WriteFile(pWfile,target,nSize,&writesize,NULL);
    
        //善后工作
        delete[]buffer;//注意是delete[]而不是delete
        CloseHandle(pWfile);//关闭句柄
    //*/
    }

    Z

  • 相关阅读:
    Universal USB Installer集开源软件之佳作
    利用sdkman安装kotlin和java环境
    centos 7 安装docker
    CentOS 7 安装中文环境
    Using ADB and fastboot
    LinearGradient线型渐变效果
    将头图片变成圆形简单实现
    望远镜效果
    BitmapShader填充图形
    给图片加阴影效果简单示例代码实现
  • 原文地址:https://www.cnblogs.com/cppskill/p/7078998.html
Copyright © 2020-2023  润新知