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
在其他的函数中没试验.
CxImage
{
打开图片的代码:
在 doc类中添加 公共变量 CxImage myImage
然后添加 OnFileOpen()的函数:
void CimagetestDoc::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
//打开图像
CFileDialog fileOpenDlg(TRUE,"","*.jpg",NULL,"image File(*.*)",NULL);
int nRespond=fileOpenDlg.DoModal();
if (nRespond==IDOK)
{
}
}
保存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)
{
}
}
另存为bmp格式的代码 :
void CimagetestView::OnFileSaveAs()
{
// TODO: 在此添加命令处理程序代码
CimagetestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
CFileDialog fileSaveDlg(FALSE,"*.jpg","bit_24.bmp",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"image File(*.bmp)",NULL);
int nRespond=fileSaveDlg.DoModal();
if (nRespond==IDOK)
{
}
}
转灰度图像
在doc类中添加对灰度的响应函数:
void CmyimageproceeDoc::OnCximageGrayscale()
{
myImage.GrayScale();
}
void CmyimageproceeDoc::OnUpdateCximageGrayscale
{
// TODO: 在此添加命令更新用户界面处理程序代
UpdateAllViews(0);//刷新图片
}
还可以添加其他CxImage的函数
2 添加直方图的函数!
在view工具栏中添加 histogram 选项 设置ID为 ID_VIEW_HISTOGRAM
函数说明
1
用法:
void CimageDoc::OnCximageLight()
{
// TODO: 在此添加命令处理程序代码
myImage.Light(-20,0);
UpdateAllViews(0);
}