精华内容
下载资源
问答
  • CxImage

    2019-10-16 22:32:23
    CxImage CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。 为什么使用CxImage 它是平台无关的。 它是自由软件、免费的、开源的。 支持多种...

    CxImage

    CxImageC++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。

    为什么使用CxImage

    1. 它是平台无关的。
    2. 它是自由软件、免费的、开源的。
    3. 支持多种平面格式:BMPGIFICOTGAJPEGPCXPNGTIFFMNGRAS等。
    4. 功能强大:几何变换、图像处理、图像格式转换等。
    5. 使用简单:下面的入门教程会给你展示这一点。

    CxImage的功能

    Constructors:构造函数

    Initialization:初始化

    File:文件操作,主要是编解码

    Generic:图像基本变化

    DSP:图像处理操作

    Painting:绘图操作

    Multiple Images:多帧图像操作

    Transparency:透明层操作

    Palette:调色板操作

    Pixels:像素操作

    Region Selection:区域选择操作

    Alpha Channel Alpha:通道操作

    Layers:图像层操作

    Attributes:图像属性操作

    Miscellaneous:杂项

    CxImage使用入门

    1. 在网址:http://www.codeproject.com/KB/graphics/cximage.aspx,下载CxImage的源代码。

    2. 编译CxImage。解压源码包,在解压后的目录下有一个CxImageLib.dsw工作空间文件,使用VC++ 6.0 打开该工作空间文件。做以下事情:

     Project->Settings->C/C++,在Category下拉列表中选择Code Generation,将Use rum-time libary中选择MultiThread DLL. Category下拉列表中选择 Precompiled Headers中,选择第一项: Not using Precompiled headers.

     Build->Batch Build->勾选你要编译的版本库。默认情况下是每个库都有四个版本,分别是DebugReleaseUnicode DebugUnicode Release.选择你想要编译的版本即可。

     等待几分钟,即可编译好。

     新建立一个文件夹,如mycximage。在该文件夹下新建一个header文件夹和一个lib文件夹。将CxImage下的所有头文件都拷贝到header文件夹下,将刚才所有生成的lib文件拷贝到lib文件夹下。至此,你已经拥有了CxImage类库。

     打开VC++6.0,新建立一个基于对话框的MFC应用程序,叫Test。我们来完成一个将BMP位图转换成JPEG格式的小程序。在对话框上画一个按钮,双击按钮,响应事件函数。

     将刚才我们建立好的mycximage文件夹拷贝到你的工程目录下。在TestDlg.cpp文件顶部,加入以下代码:

    #include mycximage/header/ximage.h

     

    #pragma comment(lib, mycximage/lib/png.lib)

    #pragma comment(lib, mycximage/lib/libdcr.lib)

    #pragma comment(lib, mycximage/lib/jpeg.lib)

    #pragma comment(lib, mycximage/lib/zlib.lib)

    #pragma comment(lib, mycximage/lib/tiff.lib)

    #pragma comment(lib, mycximage/lib/jasper.lib)

    #pragma comment(lib, mycximage/lib/cximage.lib)

    #pragma comment(lib, mycximage/lib/mng.lib)

     

    在事件响应函数中添加一下代码:

    CxImage image;

    CString strFileName; // 图像文件名

    CFileDialog dlg( TRUE, BMP, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, ”所有图像文件(*.*)|*.*|BMP图像文件(*.BMP)|*.BMP|JPG格式图像(*.JPG)|*.JPG||);

    dlg.DoModal();

    // 获取文件名

    strFileName = dlg.GetFileName();

    // 判断文件名是否为空

    if (strFileName.GetLength() == 0)

    {

    return;

    }

    // 加载BMP位图

    image.Load( strFileName.GetBuffer( strFileName.GetLength()), CXIMAGE_FORMAT_BMP );

    // 判断图像是否有效

    if (image.IsValid())

    {

    // 判断图像颜色数

    if (!image.IsGrayScale())

    image.IncreaseBpp( 24 );

    // 设置Jpeg图像的质量

    image.SetJpegQuality( 80 );

    // 将位图转换成JPEG格式图像

    image.Save(export.jpg,CXIMAGE_FORMAT_JPG);

    }

    已经完成了将指定位图转换成JPEG格式的功能!就是这么简单!

    【转载】https://www.cnblogs.com/kex1n/archive/2010/01/16/1649059.html

    展开全文
  • CXimage

    2008-08-19 10:16:24
    介绍怎样使用CXimage
  • cximage

    2017-10-25 09:44:36
    CxImage是一个可以用于MFC 的C++图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的文件。可以实

    原文转载于:http://blog.csdn.net/yacper/article/details/5299010

    CxImage是一个可以用于MFC 的C++图像处理类库类,它可以打开,保存,显示,转换各种常见格式的图像文件,比如BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的文件。可以实现BMP<->JPG,PNG <>TIFF格式等等的互相转换。

      CxImage不仅可以实现图像文件的类型转换,还可以实现在内存图像数据的类型转换,并且使用很方便。除了文件格式的相互转换,它还提供了很多很多图像后处理的功能,比如图像模糊,锐化等等,功能非常强大和实用。

     

    示例: 如何转换一种格式到另外一种格式 

    CxImage  image;
    // bmp -> jpg 
    image.Load( " image.bmp " , CXIMAGE_FORMAT_BMP);
    if (image.IsValid()){
        
     if ( ! image.IsGrayScale()) image.IncreaseBpp( 24 );
        image.SetJpegQuality(
     80 );
        image.Save(
     " image.jpg " ,CXIMAGE_FORMAT_JPG);
    }
    // png -> tif 
    image.Load( " image.png " , CXIMAGE_FORMAT_PNG);
    if (image.IsValid()){
        image.Save(
     " image.tif " ,CXIMAGE_FORMAT_TIF);
    }

      如何从资源中加载图像

    // Load the resource IDR_PNG1 from the PNG resource type 
    CxImage * newImage = new CxImage();
    newImage
     -> LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG1),
                           
    " PNG " ),CXIMAGE_FORMAT_PNG);
    或者
    // Load the resource IDR_JPG1 from DLL 
    CxImage * newImage = new CxImage();
    HINSTANCE hdll
     = LoadLibrary( " imagelib.dll " );
    if (hdll){
        HRSRC hres
     = FindResource(hdll,MAKEINTRESOURCE(IDR_JPG1), " JPG " );
        newImage
     -> LoadResource(hres,CXIMAGE_FORMAT_JPG,hdll);
        FreeLibrary(hdll);
    }
    或者
    // Load a bitmap resource; 
    HBITMAP bitmap = ::LoadBitmap(AfxGetInstanceHandle(),
                               MAKEINTRESOURCE(IDB_BITMAP1)));
    CxImage 
    * newImage = new CxImage();
    newImage
     -> CreateFromHBITMAP(bitmap);

      如何解码内存 中的图像 

    CxImage image((BYTE * )buffer,size,image_type);
    或者
    CxMemFile memfile((BYTE
     * )buffer,size);
    CxImage image(
     & memfile,image_type);
    或者
    CxMemFile memfile((BYTE
     * )buffer,size);
    CxImage
     * image = new CxImage();
    image
     -> Decode( & memfile,type);

      如何对内存中的图像编码 

    long size = 0 ;
    BYTE
     * buffer = 0 ;
    image.Encode(buffer,size,image_type);
    ...
    image.FreeMemory(buffer);
    或者
    CxMemFile memfile;
    memfile.Open();
    image.Encode(
     & memfile,image_type);
    BYTE
     * buffer = memfile.GetBuffer();
    long size = memfile.Size();
    ...
    image.FreeMemory(buffer);

      如何创建一副多页的TIFF

    CxImage * pimage[ 3 ];
    pimage[
     0 ] =& image1;
    pimage[
     1 ] =& image2;
    pimage[
     2 ] =& image3;
    FILE
     * hFile;
    hFile 
    = fopen( " multipage.tif " , " w+b " );
    CxImageTIF multiimage;
    multiimage.Encode(hFile,pimage,
     3 );
    fclose(hFile);
    或者
    FILE
     * hFile;
    hFile 
    = fopen( " c://multi.tif " , " w+b " );
    CxImageTIF image;
    image.Load(
     " c://1.tif " ,CXIMAGE_FORMAT_TIF);
    image.Encode(hFile,
     true );
    image.Load(
     " c://2.bmp " ,CXIMAGE_FORMAT_BMP);
    image.Encode(hFile,
     true );
    image.Load(
     " c://3.png " ,CXIMAGE_FORMAT_PNG);
    image.Encode(hFile);
    fclose(hFile);

      如何复制和粘贴图像

    // 复制(copy) 
    HANDLE hDIB = image -> CopyToHandle();
    if (::OpenClipboard(AfxGetApp() -> m_pMainWnd -> GetSafeHwnd())) {
        
     if (::EmptyClipboard()) {
            
     if (::SetClipboardData(CF_DIB,hDIB) == NULL ) {
                AfxMessageBox( 
    " Unable to set Clipboard data " );
    }    }    }
    CloseClipboard();
    // 粘贴(paste) 
    HANDLE hBitmap = NULL;
    CxImage 
    * newima = new CxImage();
    if (OpenClipboard()) hBitmap = GetClipboardData(CF_DIB);
    if (hBitmap) newima -> CreateFromHANDLE(hBitmap);
    CloseClipboard();

      如何在图片框控件(Picture Box)中显示图像 

    HBITMAP m_bitmap = NULL;
    CxImage image(
     " myfile.png " , CXIMAGE_FORMAT_PNG);
    ...
    CDC
     * hdc = m_picture.GetDC();
    HBITMAP m_bitmap 
    = image.MakeBitmap(hdc -> m_hDC);
    HBITMAP hOldBmp 
    = m_picture.SetBitmap(m_bitmap);
    if (hOldBmp) DeleteObject(hOldBmp);
    if (hdc -> m_hDC) m_picture.ReleaseDC(hdc);
    ...
    if (m_bitmap) DeleteObject(m_bitmap);

     

    Cimage合并图片就是这么简单:

           CxImage t_img1,t_img2,t_img3;

           int t_h1,t_w1,t_h2,t_w2,t_h3,t_w3,t_bpp;

           t_img1.Load("F://1.jpg");

           t_img2.Load("F://2.jpg");

           t_h1=t_img1.GetHeight();

           t_w1=t_img1.GetWidth();

           t_h2=t_img2.GetHeight();

           t_w2=t_img2.GetWidth();

           t_h3=t_h1;

           t_w3=t_w1+t_w2;

           t_bpp=t_img1.GetBpp();

           t_img3.Create(t_w3,t_h3,t_bpp);

           t_img3.MixFrom(t_img1,0,0);

           t_img3.MixFrom(t_img2,t_w1,0);

           t_img3.Save("f://3.jpg",CXIMAGE_FORMAT_JPG);

     

    译后序:

      关于图像处理库,我相信大家有一个共同的疑问:这么多图像处理库,我该如何选择?在CSDN的blog中有这样一段文字,比较透彻地回答了这个问题,感谢作者的透彻解释:

      "CxImage类库是一 个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage, PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所 束缚。

      在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂 着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封 装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。"



    展开全文
  • CXImage

    2006-10-17 14:55:00
    把他的lib和dll copy到你的工程 然后把 xfile.h ximadefs.h ximage.h xiofile.h xmemfile.h 及其cpp文件加入你的工程 需要使用CxImage的时候#include "ximage.h" 就可以了 别忘了要link image.lib哟 ...
    把他的lib和dll  copy到你的工程  
      然后把  
      xfile.h  
      ximadefs.h  
      ximage.h  
      xiofile.h  
      xmemfile.h  
      及其cpp文件加入你的工程  
      需要使用CxImage的时候#include  "ximage.h"  
      就可以了  
      别忘了要link  image.lib哟   
      ximadefs.h  
      xiofile.h  
      xmemfile.h  
      在我的CxImage中这三个文件的.cpp找不到。怎么回事啊。  
       CxImage  Sample  
      http://www.codeproject.com/listctrl/ThumbsViewer.asp  
     
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,240
精华内容 496
关键字:

cximage