WEB开发网
开发学院软件开发VC 图片的合并与分解 阅读

图片的合并与分解

 2009-04-19 20:03:26 来源:WEB开发网   
核心提示: //分解,目前仅考虑BMP格式voidCBmp2MDlg::ImageUnPack(LPCTSTRsPath,LPCTSTRsType,intx,inty){if(NULL==m_bitmap)return;//must!//Bitmap*bmp=m_bitmap;intw=bmp->

//分解,目前仅考虑 BMP 格式
void CBmp2MDlg::ImageUnPack(LPCTSTR sPath,LPCTSTR sType,int x,int y)
{

if( NULL==m_bitmap ) return; //must!

//

Bitmap *bmp = m_bitmap;

int w = bmp->GetWidth();

int h = bmp->GetHeight();

CLSID clsid;

GetEncoderClsid( sType,&clsid );


CString ss;

int i,k=1;

for( i=0;i<w;i+=x,k++ ) //只考虑横向

{

//新建指定大小的图片

Bitmap bt(x,y);

//从它得到绘制设备

Graphics *gc = Graphics::FromImage( &bt );

//从原图片上截取指定大小的图片贴到这个新建的图片的上面

gc->DrawImage( bmp,RectF(0,0,x,y),i,0,x,y,UnitPixel ); 

//

ss.Format( _T("%s%s_%d.%s"),sPath,m_sFileTitle,k,GetType(sType) );

//保存到指定路径

bt.Save( ss,&clsid,NULL );

//

delete gc;

gc = NULL;

}


ShellExecute( NULL,_T("open"),sPath,NULL,NULL,SW_SHOW );
}

就是按照输入的大小先创建一张空图片,然后计算位置,从源图片上的截取这个位置上的图贴过来,然后保存。

4、图片的合并

合并多张图为一张,就是上面的逆过程了。核心函数就是 ImagePack 请去参考源码。

就是这么个小工具,希望在你想用的时候能节省一点时间。你可以任意去扩充它,比如:增加图片预览的功能,保存的命名规则,或者拖曳 ListCtrl 让各图片按你预想的顺序排到一张大图上……等等。

上一页  1 2 3 

Tags:图片 合并 分解

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接