当前位置: 首页 > news >正文

免费模板下载网seo自动优化软件安卓

免费模板下载网,seo自动优化软件安卓,广州网上注册公司,中国建设银行企业网站首页介绍 CxImage是一个可非常简单快速的加载,保存,显示和转换图像的C类. 文件格式和链接的C库 Cximage对象基本上是加了一些成员变量来保存有用信息的一个位图: class CxImage{...protected:void* pDib; //包含标题,调色板,像素BITMAPINFOHEADER head; //标准头文件CXIMAGEINFO…

介绍

CxImage是一个可非常简单快速加载,保存,显示和转换图像C++类.

文件格式和链接的C库

Cximage对象基本上是加了一些成员变量保存有用信息一个位图:

 class CxImage{...protected:void* pDib;
//包含标题,调色板,像素BITMAPINFOHEADER head;
//标准头文件CXIMAGEINFO info;
//扩展信息BYTE* pSelection;
//所选区域BYTE* pAlpha;
//`α`通道CxImage** ppLayers;
//通用图层CxImage** ppFrames;
//动画帧}

CxImage::head位图头,CxImage::pDib普通位图(如CxImageBMP::Encode的实现所示).
CxImage::info是,包含不同格式间共享的许多信息所有成员函数.

typedef struct tagCxImageInfo {DWORD   dwEffWidth;
//`双字`对齐的扫描行宽度BYTE*   pImage;
//图像位void*   pGhost;
//如果这是重影,则`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;
//如果启用了调色板中的`α`值,则为`真`.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;

CxImage对象也是一组层.仅在必要时才分配每层中的缓冲.

CxImage::pDib背景图像.CxImage::pAlpha透明图层.CxImage::pSelection是创建处理图像的感兴趣区域选择图层.

在这3个特定平面上,可添加在CxImage::ppLayers中保存的其他通用图层.通用层是完整的CxImage对象,因此可构建嵌套层的复杂结构.
CxImage::ppFrames用来保存(GIF)动画图像.

CxImage类成员和操作

CxImage是使用Doxygen记录的,但是因为历史原因,仍未记录许多不常见的功能.

支持的格式和选项

整个库非常大,在ximcfg.h主头文件中,可找到启用或禁止特定图形格式特征的开关.每个JPG,PNGTIFF库都会对最终应用增加约100KB,而CxImage影响约为50KB.

因此,应该只支持和链接应用真正需要的格式.

格式#define必需的库[KB]大小
BMP,GIF,ICO,TGA,PCX,WBMP,WMF,SKACXIMAGE_SUPPORT_BMP,CXIMAGE_SUPPORT_GIF,CXIMAGE_SUPPORT_ICO,CXIMAGE_SUPPORT_TGA,CXIMAGE_SUPPORT_PCX,CXIMAGE_SUPPORT_WBMP,CXIMAGE_SUPPORT_WMF,CXIMAGE_SUPPORT_SKA内置24
JPEG格式CXIMAGE_SUPPORT_JPGjpeg88
PNGCXIMAGE_SUPPORT_PNGpng,zlib104
MNGCXIMAGE_SUPPORT_MNGmng,zlib,jpeg148
TIFFCXIMAGE_SUPPORT_TIFTIFF,zlib,jpeg124
JBIGCXIMAGE_SUPPORT_JBGjbig28
PNM,PPM,PGM,RASCXIMAGE_SUPPORT_PNM,CXIMAGE_SUPPORT_RASjasper176
JPEG-2000格式CXIMAGE_SUPPORT_JP2``CXIMAGE_SUPPORT_JPC``CXIMAGE_SUPPORT_PGX同上176
RAWCXIMAGE_SUPPORT_RAWlibdcr132
选项#define[KB]大小
CxImage核心所有开关关闭20
几何变换CXIMAGE_SUPPORT_TRANSFORMATION16
处理图像CXIMAGE_SUPPORT_DSP24
绘画和窗口相关功能CXIMAGE_SUPPORT_WINDOWS12
透明CXIMAGE_SUPPORT_ALPHA4
选区CXIMAGE_SUPPORT_SELECTION4
多层CXIMAGE_SUPPORT_LAYERS<4
图形格式转换CXIMAGE_SUPPORT_DECODE,CXIMAGE_SUPPORT_ENCODE<4
插值功能CXIMAGE_SUPPORT_INTERPOLATION<4
处理异常CXIMAGE_SUPPORT_EXCEPTION_HANDLING<4

在项目中使用CxImage

CxImgLib.dsw客户区显示了构建应用(demo.exe)期望库,包括CxImage中可用的几乎所有函数和格式.必须先编译所有库,才能链接最终应用.

在源码中,你必须添加#include"ximage.h"

CxImage中添加自定义功能

使用CxImage编写处理图像的新功能并不难.在此,我描述了非常简单的CxImage::Jitter,但它显示了在CxImage中工作时注意的许多方面.

首先,当然是声明:在ximage.hCXIMAGE_SUPPORT_DSP部分中声明bool Jitter(longradius=2);,你可在类的域中声明该函数.
现在是定义:

bool CxImage::Jitter(long radius)
{
//检查图像是否有效,这应该总是是函数中的第一行if (!pDib) return false;
//局部变量long nx,ny;
//临时图像来保存算法的部分结果CxImage tmp(*this,pSelection!=0,true,true);//仅在包含所选区域的最小矩形中限制函数的效果(使用`Selection...()`函数),这加快循环速度.long xmin,xmax,ymin,ymax;if (pSelection){xmin = info.rSelectionBox.left; xmax = info.rSelectionBox.right;ymin = info.rSelectionBox.bottom; ymax = info.rSelectionBox.top;} else {xmin = ymin = 0;xmax = head.biWidth; ymax=head.biHeight;}
//`主循环`:在垂直方向扫描图像for(long y=ymin; y <ymax; y++){
//监听循环的进度info.nProgress = (long)(100*y/head.biHeight);
//让应用快速退出if (info.nEscape) break;
//`主循环`:在水平方向扫描图像for(long x=xmin; x<xmax; x++){
//如果启用该函数,则仅处理所选区域内的像素
#if CXIMAGE_SUPPORT_SELECTIONif (SelectionIsInside(x,y))
#endif
//`CXIMAGE_SUPPORT_SELECTION`{
//主要算法nx=x+(long)((rand()/(float)RAND_MAX - 0.5)*(radius*2));ny=y+(long)((rand()/(float)RAND_MAX - 0.5)*(radius*2));if (!IsInside(nx,ny)) {nx=x;ny=y;}//在临时图像中保存结果.如果可以,请仅对`24bpp`图像使用`PixelColor`,对`8,4`和`1bpp`图像使用`PixelIndex`:这样更快if (head.biClrUsed==0){tmp.SetPixelColor(x,y,GetPixelColor(nx,ny));} else {tmp.SetPixelIndex(x,y,GetPixelIndex(nx,ny));}
//如果启用了该功能,则还要处理`α`图层中的像素
#if CXIMAGE_SUPPORT_ALPHAtmp.AlphaSet(x,y,AlphaGet(nx,ny));
#endif
//`CXIMAGE_SUPPORT_ALPHA`}}}
//保存结果并退出Transfer(tmp);return true;
}

示例:如何…

…按另一个格式转换一个格式.

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);
}

…加载图像资源

//从`PNG`资源类型加载资源`IDR_PNG1`
CxImage* newImage = new CxImage();
newImage->LoadResource(FindResource(NULL,MAKEINTRESOURCE(IDR_PNG1), "PNG"),CXIMAGE_FORMAT_PNG);
//或
//从`DLL`加载资源`IDR_JPG1`
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);
}
//或:
//加载位图资源;
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);

…复制/粘贴图像

//复制
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();
//糊
HANDLE hBitmap=NULL;
CxImage *newima = new CxImage();
if (OpenClipboard()) hBitmap=GetClipboardData(CF_DIB);
if (hBitmap) newima->CreateFromHANDLE(hBitmap);
CloseClipboard();

在图片框中显示文件

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);
http://www.hkea.cn/news/111765/

相关文章:

  • 辛集城乡建设管理局网站网络营销网络推广
  • 阿里云部署一个自己做的网站吗电商网站搭建
  • 免费汽车租赁网站模板网站域名解析ip查询
  • 企业解决方案官网国内seo排名分析主要针对百度
  • 变态版手游石景山区百科seo
  • 阿里云控制台登录入口seo矩阵培训
  • wordpress苗木模板网站搜索排优化怎么做
  • 网站图片引导页怎么做重庆seo招聘
  • 如何做属于自己的领券网站郑州百度网站优化排名
  • 建设银行益阳市分行桃江支行网站公司页面设计
  • vps 网站上传网站seo优化是什么意思
  • wordpress cos腾讯云seo网站优化收藏
  • 鹤岗商城网站建设免费域名申请
  • 江苏三个地方疫情严重抖音视频排名优化
  • 竞价排名广告东莞关键词排名快速优化
  • 做视频网站要什么格式好网络营销公司怎么注册
  • 企业专业网站建设快速网站搭建
  • 武威建设网站的网站google谷歌搜索
  • 长沙公司做网站多少钱推广平台怎么做
  • 现在大家做电商网站用什么源码营销策略都有哪些
  • 可以做试卷的网站英语怎么说seo关键词排名优化系统源码
  • 网站怎么设置支付功能企业网站的主要类型有
  • 成都圣都装饰装修公司北京搜索优化排名公司
  • 境外建设网站贴吧互联网域名注册查询
  • 广州建站工作室淘客推广怎么做
  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告
  • 网站表单及商品列表详情模板如何搭建自己的网站