Cximag是一个库 能够处理大多数格式的图像的打开, 变形,等功能, 很强大, 而且还是开源的. 不过作者好像在2004年就停止了更新,  可能是因为大部分的功能都已经实现了.

我用的vs 2005 与vc有不小的区别. 因此 设置和作者的介绍有点不同, 我是笨鸟, 把所有的.h和.cpp 文件都拷贝到工程的一个文件下. 然后在2005中设置lib 的路径.  这样就不需要 设置

#pragma comment(lib,"cximage.lib")
#pragma comment(lib,"Jpeg.lib")
#pragma comment(lib,"png.lib ")
#pragma comment(lib,"zlib.lib ")
#pragma comment(lib,"tiff.lib ")
#pragma comment(lib,"jasper.lib ")
#pragma comment(lib,"j2k.lib ")
#pragma comment(lib,"jbig.lib ")

只需在 stdafx.h 中加入 #include "ximage.h"就行了

Cximage 是一个不同于Cobject的类 因此可以自己设个类 用于图像的处理,也可以在 Cojectt的派生类中随便添加 .

1 bmp转换为jpg  可以新建一个按键然后对按键做如下响应 ,也可以在ondraw 函数中添加 函数.

在其他的函数中没试验.

CxImage  image;   // 定义一个CxImage对象

// 从bmp文件转换为jpg文件(bmp -> jpg)
image.Load("image.bmp", CXIMAGE_FORMAT_BMP);   //先装载bmp文件,需要指定文件类型
    // 判断加载的bmp文件是否存在。
if (image.IsValid())......{
       // Returns true if the image has 256 colors  and a linear grey scale palette.
    if(!image.IsGrayScale()) image.IncreaseBpp(24);   // param nbit: 4, 8, 24
    image.SetJpegQuality(99);                // 设置图像的压缩质量参数(从0到100,数值越大,质量越高)
    image.Save("image.jpg",CXIMAGE_FORMAT_JPG);          // 把压缩后的图像以jpg文件类型保存起来。
}

打开图片的代码:
在 doc类中添加 公共变量 CxImage myImage  
然后添加 OnFileOpen()的函数:
void CimagetestDoc::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
//打开图像
CFileDialog fileOpenDlg(TRUE,"","*.jpg",NULL,"image File(*.*)",NULL);
int nRespond=fileOpenDlg.DoModal();
if (nRespond==IDOK)
{
  CString filePath=fileOpenDlg.GetPathName();
  //CxImage myImage;
  myImage.Load(filePath,0);

}

}

保持jpg 图象

void CimagetestDoc::OnFileSave()
{
// TODO: 在此添加命令处理程序代码
CFileDialog fileSaveDlg(FALSE,"*.jpg","*.jpg",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"image File(*.jpg)",NULL);
int nRespond=fileSaveDlg.DoModal();
if (nRespond==IDOK)
{
  CString filePath=fileSaveDlg.GetPathName();
  myImage.Save(filePath,CXIMAGE_FORMAT_JPG );
}
}

另存为bmp格式的代码 :

void CimagetestView::OnFileSaveAs()
{
// TODO: 在此添加命令处理程序代码
CimagetestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
  return;
CFileDialog fileSaveDlg(FALSE,"*.jpg","bit_24.bmp",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"image File(*.bmp)",NULL);
int nRespond=fileSaveDlg.DoModal();
if (nRespond==IDOK)
{
  CString filePath=fileSaveDlg.GetPathName();
  pDoc->myImage.Save(filePath,CXIMAGE_FORMAT_BMP );
}
}

转灰度图像
在doc类中添加对灰度的响应函数:
void CmyimageproceeDoc::OnCximageGrayscale()
{
myImage.GrayScale();
}

void CmyimageproceeDoc::OnUpdateCximageGrayscale(CCmdUI *pCmdUI)
{
// TODO: 在此添加命令更新用户界面处理程序代
UpdateAllViews(0);//刷新图片
}

还可以添加其他CxImage的函数

2 添加直方图的函数!

在view工具栏中添加 histogram 选项 设置ID为 ID_VIEW_HISTOGRAM

函数说明

1   亮度调整: bool Light(long brightness, long contrast = 0); brightness >0  亮度增加, <0 亮度 减少 , constrast 对比度的变化
用法:
void CimageDoc::OnCximageLight()
{
// TODO: 在此添加命令处理程序代码
myImage.Light(-20,0);
UpdateAllViews(0);

}

CxImage使用心得(转载)相关推荐

  1. 嵌入式心得 (转载)

    学习有捷径吗?俺认为是有的,正确的道路就是捷径.     就好象是爬山,如果有导游图,那就能找到一条最正确的路线:如果没有导游图,自己瞎琢磨,东问西问,也未必能找到最佳的路线.     有时候回首前尘 ...

  2. 谈谈建站心得(转载)[精华]

               从事互联网行业已经7年了,有一些感悟在脑中盘旋.经历了很多教训以及狂热,工作与生活给了我一些教训与心得,遇到一事情时,经常有一种似曾相识的感觉,但真要说出所以然,似无法将他们高度 ...

  3. 托福备考有用的心得 ——转载

    [转]这是一篇转载的文章,小斑我参考这篇文章的方法,阅读拿了30分哦!!现在推荐给大家! [背景介绍]             先报个分er~ 29  +  29  +  24  +  28  =   ...

  4. 计算机科学与技术学习心得(转载)

    计算机科学与技术学习心得 计算机科学与技术反思录 计算机科学与技术这一门科学深深的吸引着我们这些同学们,上计算机系已经有近 三年了,自己也做了一些思考,我一直认为计算机科学与技术这门专业,在本科阶段是 ...

  5. mybatisplus的CRUD基本使用心得--转载

    是对MyBatis-Plus的功能进行简单介绍,虽然是介绍,也让我们领略到他的优雅与强大.你是不是已经被吸引了?别着急,上一节,我们算是参观了MyBatis的风景,这一节,我将带你领略他独特的魅力. ...

  6. 兰芝女王 的炒股心得-转载编辑

    在这个市场,只有两种人能赚钱,前者是不频繁操作捂股的笨蛋,比如当初捂山金中金浙江朋友;另一种是巨鼎聪明之人,经过熊市历练真金白银的实战涅槃重生,追寻并正在印证持续福利的人.但我们这个市场,鱼龙混杂,每 ...

  7. 计算机安装打印机 心得,[转载]win64位下的老式打印机驱动安装心得(转)

    年前买了新电脑,装了win7 x64,一直都还不错的,只是打印文件都还得连老的笔记本,很不方便.今天动手把打印机给装上. 家里的打印机还是04年买的canon ip1000,驱动光盘还只是xp下的驱动 ...

  8. 托福备考有用的心得 ——转载

    https://blog.csdn.net/u011792913/article/details/79357743 [背景介绍]             先报个分er~ 29  +  29  +  2 ...

  9. CxImage图像处理类库说明3(转载)

    首先,我们需要声明这个函数: bool Jitter(long radius=2) 在ximage.h头文件的CXIMAGE_SUPPORT_DSP部分,你可以在public区域的任何部分声明这个函数 ...

最新文章

  1. UIScrollView 使用
  2. 【Java】Calendar获取年、月、日、时间
  3. maven引入CDH依赖包
  4. request获取中文乱码的问题
  5. Java 开发者每天都在做什么?
  6. JavaScript结合Bootstrap仿微信后台多图文界面管理
  7. c语言程序设计案例教程肖利群,C语言程序设计案例教程
  8. ubuntu下针对php的thrift 安装折腾记录
  9. flutter用英语怎么说_碍手碍脚用英语怎么说?
  10. 收集常用的.net开源项目
  11. 1、Django下载与搭建、配置环境变量
  12. Mybatis之select元素
  13. CC2430串口设置问题解决后的感想
  14. tomcat-解决get请求中文乱码问题
  15. OpenGL 渲染直线
  16. mysql按月份分组查询_mysql如何按月份分组查询
  17. Word及Autocad中中文字号与字体大小的关系
  18. 移动 webApp 开发入门与进阶
  19. C++ 类与对象_类的其他成员(常成员,静态成员,友元)
  20. xp系统电脑如何链接宽带连接服务器,WinXP设置开机自动宽带连接的方法

热门文章

  1. 林肯android auto,林肯mkz仪表盘怎么设置中文
  2. 安装linux可是c盘文件夹失败,硬盘安装linux失败,进不去以前的windows怎么处理?
  3. c语言读取txt第二行数值,c语言读取文件的第二行
  4. Javascript希尔排序
  5. Python的filter、map、reduce与lambda结合使用
  6. html5 音乐转盘,HTML5 幸运大转盘
  7. python 两个df求相同的行_python – Pandas df操作:如果其他列行重复,则返回值列表的新列...
  8. python中ttk详解_Python 中的Property 动态属性和特性详解
  9. Oracle分析函数-nulls first/nulls last
  10. 北大开源了中文分词工具包,准确度远超Jieba,提供三个预训练模型