设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

十全大补:CxImage图像处理类库

2009-3-6 09:19| 发布者: joejoe0332| 查看: 15280| 评论: 0


  类似的效果也同样可以利用TextBlur (\Filters\Non Linear\Text Blur)进行后处理获得。这是一个非线性的过滤器,它只对角或圆形的边缘起作用,从而不会影响到纵向或横向的线。下图展示了不同平滑方法的实际效果:



  CxImage库的结构

  在整个库的继承树中,CxImage位于所有其他模块的顶部。这不是一个完全的符合OOP的方式,但是至少从最初的版本一直到现在,它都工作得很好。现在想要改变整个结构,已经太晚了。但是,你总是可以使用这些继承类来操作相应格式的图像,例如你可以使用CxImageTIF来保存多页的TIFF文件。这样显得非常直观。

  连接所有模块和C库的是CxFile。这是一个虚类,它提供了标准的方法,用于访问硬盘或者内存的文件数据。 
 
  CxImage的继承树
  一个CxImage对象基本上对应于一副位图,同时添加了一些额外的成员变量用于存储一些有用的信息。

class CxImage
  {
  ...
  
protected:
  
void* pDib;            //包含文件头,调色板和像素数据
  BITMAPINFOHEADER head; //标准文件头
  CXIMAGEINFO info;      //扩展信息
  BYTE* pSelection;      //选区
  BYTE* pAlpha;          //alpha通道
  CxImage** ppLayers;     //普通层
  CxImage** ppFrames;     //动画的帧
  }
CxImage::head 是位图文件的文件头,而CxImage::pDib就是一个普通的位图(就像你在CxImageBMP::Encode中看到的一样)。  
CxImage::info 是一个方便的信息容器。这些信息被不同的文件格式所共享,同时供所有成员函数访问。
typedef
struct tagCxImageInfo {
    DWORD   dwEffWidth;      
//双字节对齐宽度
    BYTE*   pImage;           //图像数据
void*   pGhost;           //如果这是一个备份(ghost),
          
//则pGhost指向它的原始对象
    DWORD   dwType;           //原始图像格式
    char    szLastError[256]; //调试信息,最后的错误信息
    long    nProgress;        //进度
    long    nEscape;          //取消
    long    nBkgndIndex;      //GIF, PNG, MNG使用
    RGBQUAD nBkgndColor;      //RGB透明使用
    BYTE    nQuality;         //JPEG使用
    long    nFrame;           //TIF, GIF, MNG使用,表示当前活动帧
    long    nNumFrames;       //TIF, GIF, MNG使用,表示总帧数                        
    DWORD   dwFrameDelay;     //GIF, MNG使用,表示帧的延迟
    long    xDPI;             //水平分辨率  
    long    yDPI;             //垂直分辨率  
    RECT    rSelectionBox;    //对象的外包围框
    BYTE    nAlphaMax;        //最大透明度
bool    bAlphaPaletteEnabled;  //如果调色板中的alpha值是启用的,
    
//则这个变量为true
bool    bEnabled;         //启用绘制函数
    long    xOffset;
    
long    yOffset;
DWORD   dwEncodeOption;  
//GIF, TIF使用:
    
// 0=def.1=unc,2=fax3,3=fax4,
                              
// 4=pack,5=jpg
    RGBQUAD last_c;           //用于优化GetNearestIndex
    BYTE    last_c_index;
    
bool    last_c_isvalid;
    
long    nNumLayers;
    DWORD   dwFlags;
} CXIMAGEINFO;


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部