1、首先从此处下载源代码

http://www.codeproject.com/KB/graphics/cximage.aspx

2、然后将里面的工程全部编译一下,我觉得应该是生成对应的库。

3、然后用vc建个工程,同时将源代码里面除了Demo这些文件夹,全部考到新建工程的同一目录。

4、接下来就是最麻烦的配置了:

|- C/C++
|   |- Code Generation
|   |   |- Use run-time library : Multithreaded DLL (must be the same for 
|   |   |  all the linked libraries)  //应该只要是多线程DLL即可,DEBUG的也行
|   |   |- Struct member alignment : must be the same for all the linked libraries
|   |- Precompiled headers : not using precompiled headers)

配置lib库: 
Project->Setting->link选项卡: 
在“对象/库模块”下添加 
../png/Debug/png.lib ../jpeg/Debug/jpeg.lib ../zlib/Debug/zlib.lib ../tiff/Debug/tiff.lib ../jbig/Debug/jbig.lib ../jasper/Debug/jasper.lib  ../cximage/Debug/cximage.lib。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/skyair624/archive/2008/10/01/3008014.aspx

在c/c++的附加包含路径里面填上:../CxImage(我也不知道这是干什么的)

5、添加头文件

#include "../CxImage/ximage.h"
#include "../CxImage/ximacfg.h"

6、关键代码:

CxImage image;
 image.Load(_T("abc.bmp"), CXIMAGE_FORMAT_BMP); 
 if (image.IsValid()){
       cout << "ok" << endl;
    image.Save(_T("image.jpg"), CXIMAGE_FORMAT_JPG);// 把压缩后的图像以jpg文件类型保存起来。
 }

首先在工程目录下你得放一个abc.bmp的图片,可以用下面这个代码产生:

void CapScreen(char filename[])
{
    CDC *pDC;
    pDC = CDC::FromHandle(GetDC(GetDesktopWindow()));
 if(pDC == NULL) return;
    int BitPerPixel = pDC->GetDeviceCaps(BITSPIXEL);
    int Width = pDC->GetDeviceCaps(HORZRES);
    int Height = pDC->GetDeviceCaps(VERTRES);

CDC memDC;
    if(memDC.CreateCompatibleDC(pDC) == 0) return;
    
    CBitmap memBitmap, *oldmemBitmap;
    if(memBitmap.CreateCompatibleBitmap(pDC, Width, Height) == NULL) return;

oldmemBitmap = memDC.SelectObject(&memBitmap);
 if(oldmemBitmap == NULL) return;
    if(memDC.BitBlt(0, 0, Width, Height, pDC, 0, 0, SRCCOPY) == 0) return;

BITMAP bmp;
    memBitmap.GetBitmap(&bmp);
    
    FILE *fp = fopen(filename, "w+b");

BITMAPINFOHEADER bih = {0};
    bih.biBitCount = bmp.bmBitsPixel;
    bih.biCompression = BI_RGB;
    bih.biHeight = bmp.bmHeight;
    bih.biPlanes = 1;
    bih.biSize = sizeof(BITMAPINFOHEADER);
    bih.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight;
    bih.biWidth = bmp.bmWidth;
    
    BITMAPFILEHEADER bfh = {0};
    bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
    bfh.bfSize = bfh.bfOffBits + bmp.bmWidthBytes * bmp.bmHeight;
    bfh.bfType = (WORD)0x4d42;
    
    fwrite(&bfh, 1, sizeof(BITMAPFILEHEADER), fp);
    
    fwrite(&bih, 1, sizeof(BITMAPINFOHEADER), fp);
    
    BYTE * p = new BYTE[bmp.bmWidthBytes * bmp.bmHeight];

GetDIBits(memDC.m_hDC,
        (HBITMAP) memBitmap.m_hObject,
     0,
     Height,
     p,
     (LPBITMAPINFO) &bih,
     DIB_RGB_COLORS);

fwrite(p, 1, bmp.bmWidthBytes * bmp.bmHeight, fp);

delete [] p;

fclose(fp);

memDC.SelectObject(oldmemBitmap);
}

7、最后运行就可以了

我的可以将5M的bmp文件压缩成168K的jpeg

8、note:

image.Load(_T("image.bmp"), CXIMAGE_FORMAT_BMP); 一定要这样用,否则会报错的,这是我在

http://topic.csdn.net/u/20081214/21/D012F730-C165-4A4C-9B01-3E449C7CB48B.html发现的。

可能显得很笨拙,折腾我3个小时,跟大家分享一下吧!干软件的要团结!

CxImage的使用的更多相关文章

  1. CxImage图像库的使用 .

    http://blog.csdn.net/wangjie0377/article/details/7830405 CxImage图像库 CxImage下载地址:http://www.codeproje ...

  2. CxImage在VS2010下的配置

    http://blog.csdn.net/youzhuo/article/details/24601621 一.编译Cximage 1.在SourceForge上下载cximage702_full.7 ...

  3. CxImage

    启动项目的时候显示此时 百度“无法启动程序cximage.lib” 得到http://tieba.baidu.com/p/1935208210把第二项设为启动项即可 为什么设置第二项为启动项呢 因为h ...

  4. 四大图像库:OpenCV/FreeImage/CImg/CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...

  5. CxImage整理(叠加字符/图像合并)

    //CxImage叠加字符 void CCxImageTestDlg::OnBnClickedButton1() { CxImage imgJPG; // 定义一个CxImage对象 imgJPG.L ...

  6. [ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...

  7. 图像处理库的比较:OpenCV,FreeImage,CImg,CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...

  8. 【转】OpenCV与CxImage转换(IplImage)、IplImage QImage Mat 格式互转

    最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取.显示.转换各种图像.Opencv库用于高级图像处理与识别.为了使Cximage图像与Openc ...

  9. 【转】CxImage图像库的使用

    CxImage下载地址:http://www.codeproject.com/KB/graphics/cximage/cximage600_full.zip 作者:Davide Pizzolato C ...

随机推荐

  1. 21副GIF动图让你了解各种数学概念(转。太强大了)

    “让我们面对它:总的来说数学是不容易的,但当你征服了问题,并达到新的理解高度,这就是它给你的回报.” ——Danica McKellar 数学是很难的科学,但因为它是科学家用数学来解释宇宙的语言,我们 ...

  2. cf467A George and Accommodation

    A. George and Accommodation time limit per test 1 second memory limit per test 256 megabytes input s ...

  3. entity framework如何控制并发

     entity framework如何控制并发 针对字段http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs.100).aspx ...

  4. linux之SQL语句简明教程---UNION ALL

    UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复 ...

  5. MindManager_9.1.157使用模板时显示“参数错误”

    每次使用标准模板时都出现这个问题,上网搜索,原来是模板中存在的 “注释”导致的问题.具体原因不详,解决起来也简单,就是繁琐一点.转抄如下: 先找到模板文件夹,共四个文件夹Communcation.Pe ...

  6. source insight 下看不了utf-8中文字符

    utf-8中文在source insight中显示为乱码,写了一个简单脚本,在linux下将代码转换为GBK格式,然后在source insight下正常查看. #!/bin/sh function ...

  7. Jenkins的安全控制

    在默认配置下,Jenkins是没有安全检查的.任何人都可以以匿名用户身份进入Jenkins,设置Jenkins和Job,执行build操作.但是,Jenkins在大多数应用中,尤其是暴露在互联网的应用 ...

  8. UVA - 11882 Biggest Number(dfs+bfs+强剪枝)

    题目大意:给出一个方格矩阵,矩阵中有数字0~9,任选一个格子为起点,将走过的数字连起来构成一个数,找出最大的那个数,每个格子只能走一次. 题目分析:DFS.剪枝方案:在当前的处境下,找出所有还能到达的 ...

  9. Android Studio Build选项的功能

    再开发过程中出现了如下错误: 无论如何clean,或者删除项目中build文件夹,Rebuild Project还是报错. 解决方案:Make Project 后出现有代码报错.修复代码问题,运行项目 ...

  10. Android解析中国天气网的Json数据

    在Android开发中.一般的APP都是通过获取server端的数据来更新UI.从server获取到的数据能够是Json.它的数据量要比XML要小,这里解析中国天气网上获取的数据,尽管已经不再更新了. ...