精华内容
下载资源
问答
  • Coreldraw 第十二章 对位图应用滤镜 12.1 对位图应用滤镜 CorelDRAW提供的滤镜主要用来处理位图以生成各种特殊效果这些滤镜均放置在位图菜单中使用滤镜的一般流程是首先选中要处理的位图然后选择所需滤镜命令最后在...
  • minigui下对位图的简单操作 可以用控件,键盘上下左右,加速减速操作
  • Delphi用两种方法提高对位图象素的访问速度..rar
  • 根据.raw文件还原了原始位图,并且用双线性插值法实现对位图的放缩,
  • GDI的功能是十分强大的.而大多有人形容它就像VB与C/C++比较一样 但VB也是很优秀的东西 我是这么认为 所以 在你一般的图形编程中使用GDI应该是很不错的选择. <br>下面写了一个简单的...快速的了解对位图操作的功能.
  • 使用行程编码(RLE)对位图(bmp)文件进行编码,就像 RLE4 和 RLE8,但扩展到 RLE16、RLE24 和 RLE32。 通常,该项目会用于嵌入式系统的GUI,使图像文件更小,并节省IO 带宽。 如果GUI支持JPG或PNG,压缩率比RLE好...
  • 调用电脑上的BMP进行傅里叶变换,只支持256色的图片,处理之后可以保存
  • GDI对位图文件的基本处理

    千次阅读 2008-07-29 16:31:00
    -GDI的功能是十分强大的.而大多有人形容它就像VB与C/C++比较一样 但VB也是很优秀的东西 我是这么认为 所以 在你...快速的了解对位图操作的功能. 示例源码下载 //最简单的贴图代码(将硬盘中的一个Bmp图像显示于窗体中)

    -

    GDI的功能是十分强大的.而大多有人形容它就像VB与C/C++比较一样 但VB也是很优秀的东西 我是这么认为 所以 在你一般的图形编程中使用GDI应该是很不错的选择.

     

    下面写了一个简单的GDI应用程序 实现对位图的基本操作 有助于GDI编程的入门.快速的了解对位图操作的功能.

     

     

     

    示例源码下载

     

    //最简单的贴图代码(将硬盘中的一个Bmp图像显示于窗体中)

    {

     //创建内存DC
     CDC m_DC;
     m_DC.CreateCompatibleDC(NULL);

     BITMAP  btm;//图像信息

     //从硬盘载入位图
     HBITMAP hBitmap=(HBITMAP)::LoadImage(NULL,"WrWOLF.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
     if (hBitmap)
     {

      ::GetObject(hBitmap,sizeof(btm),&btm);//获取图像信息
      //将位图选入内存DC
      SelectObject(m_DC,hBitmap);//将载入的图像选入DC(相当于绘制到DC对象)
      DeleteObject(hBitmap);//删除位图对象 否则会内存泄漏

      //CWnd* pWnd = AfxGetApp()->GetMainWnd();//如果这是与窗体无关函数 要使用全局函数来获取窗体DC
      //CClientDC dc(pWnd);//获取窗体DC
      CClientDC dc(this);//获取窗体DC(与窗体有关)

      dc.BitBlt(20,30,btm.bmWidth,btm.bmHeight,&m_DC,0,0,SRCCOPY);//这个函数是GDI处理中非常重要的函数 功能是将某个DC中的图像画到另一个DC中.


     }else{
      return;
     }

     

    }

     

    以上那段代码 只要指定里面的位图文件路径即可起效 这是最简单的一个窗体贴图过程.

     

     

    程序中部分代码 分别实现了位图的载入,缩放,透明,背景透明,旋转,移动等基本操作.

    //从硬盘载个一个BMP位图显示于窗体中
    //[1]创建内存DC.[2]载入位图.[3].绘制到窗体
    
    void CGDIDemoDlg::OnButtonShow() 
    {
    	OnButtonClear();
    
    	CString filePath;
    	m_comboName.GetLBText(m_comboName.GetCurSel(),filePath);
    
    	//从硬盘载入位图
    	HBITMAP hBitmap=(HBITMAP)::LoadImage(NULL/*AfxGetInstanceHandle()*/,filePath/*这里是图像文件的路径 现在为程序根目录*/,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    	if (hBitmap)
    	{
    		::GetObject(hBitmap,sizeof(btm),&btm);//获取图像信息
    		//将位图选入内存DC
    		SelectObject(m_DC,hBitmap);//将载入的图像选入DC(相当于绘制到DC对象)
    		DeleteObject(hBitmap);//删除位图对象 否则会内存泄漏
    
    		//CWnd* pWnd = AfxGetApp()->GetMainWnd();//如果这是与窗体无关函数 要使用全局函数来获取窗体DC
    		//CClientDC dc(pWnd);//获取窗体DC
    		CClientDC dc(this);//获取窗体DC(与窗体有关)
    
    		dc.BitBlt(xX,yY,btm.bmWidth,btm.bmHeight/*这里使用了图像原始大小 你可以自己修改控制图像大小*/,&m_DC,0,0,SRCCOPY);//这个函数是GDI处理中非常重要的函数 功能是将某个DC中的图像画到另一个DC中.
    
    
    	}else{
    		return;
    	}
    
    }
    
    
    
    
    void CGDIDemoDlg::OnButtonClear() 
    {
    	//ReleaseDC(&m_DC);//释放内存DC
    	Invalidate();
    	UpdateWindow();
    }
    
    
    
    
    
    void CGDIDemoDlg::OnCheck2() 
    {
    	OnButtonClear();
    
    	CClientDC dc(this);
    
    	if (((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck())
    	{
    		TransparentBlt(dc,xX,yY,btm.bmWidth,btm.bmHeight,m_DC,0,0,btm.bmWidth,btm.bmHeight,RGB(0,0,0));	
    	}else{
    		dc.BitBlt(xX,yY,btm.bmWidth,btm.bmHeight/*这里使用了图像原始大小 你可以自己修改控制图像大小*/,&m_DC,0,0,SRCCOPY);//这个函数是GDI处理中非常重要的函数 功能是将某个DC中的图像画到另一个DC中.
    	}
    }
    
    
    
    
    void CGDIDemoDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	//清除原来的图像
    	OnButtonClear();
    
    	CClientDC dc(this);//获取窗体DC
    
    	BLENDFUNCTION rBlendProps; 
    	rBlendProps.BlendOp = AC_SRC_OVER; 
    	rBlendProps.BlendFlags = 0; 
    	rBlendProps.AlphaFormat = 0;
    	
    	
    	rBlendProps.SourceConstantAlpha = m_sliderCtrl.GetPos();//透明度,0表示不显示,255则完全显示
    	
    	AlphaBlend( dc, xX, yY,btm.bmWidth,btm.bmHeight,m_DC, 0, 0,btm.bmWidth,btm.bmHeight, rBlendProps );
    
    	*pResult = 0;
    }
    
    
    
    void CGDIDemoDlg::OnReleasedcaptureSlider2(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	OnButtonClear();
    
    	CClientDC dc(this);//获取窗体DC
    
    	StretchBlt(dc,xX,yY,btm.bmWidth/2*m_sliderCtrlSize.GetPos(),btm.bmHeight/2*m_sliderCtrlSize.GetPos(),m_DC,0,0,btm.bmWidth,btm.bmHeight,SRCCOPY);	
    
    	*pResult = 0;
    }
    
    void CGDIDemoDlg::OnReleasedcaptureSlider3(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    
    	OnButtonClear();
    
    	CClientDC dc(this);
    
    	//反转图像
    	switch(m_sliderCtrlChange.GetPos())
    	{
    	case 0:
    		StretchBlt(dc, xX, yY, btm.bmWidth,btm.bmHeight, m_DC,btm.bmWidth-1, 0, -btm.bmWidth,btm.bmHeight, SRCCOPY );
    		break;
    	case 1:
    		StretchBlt(dc, xX, yY, btm.bmWidth,btm.bmHeight, m_DC,0, btm.bmHeight-1, btm.bmWidth,-btm.bmHeight, SRCCOPY );
    		break;
    	default:;
    	}
    
    
    	*pResult = 0;
    }
    
    
    
    void CGDIDemoDlg::OnReleasedcaptureSlider4(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	OnButtonClear();
    
    	CClientDC dc(this);
    
    	dc.BitBlt(xX+m_sliderCtrlX.GetPos(),yY+m_sliderCtrlY.GetPos(),btm.bmWidth,btm.bmHeight,&m_DC,0,0,SRCCOPY);
    
    
    	*pResult = 0;
    }
    
    void CGDIDemoDlg::OnReleasedcaptureSlider5(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	OnButtonClear();
    
    	CClientDC dc(this);
    
    	dc.BitBlt(xX+m_sliderCtrlX.GetPos(),yY+m_sliderCtrlY.GetPos(),btm.bmWidth,btm.bmHeight,&m_DC,0,0,SRCCOPY);
    
    	*pResult = 0;
    }
    -
    展开全文
  • Android StackBlur Android StackBlur是一个库,可以基于渐变或半径对位图执行模糊效果,并返回结果。 该库基于Mario Klingemann的代码。 该库是兼容的Android StackBlur Android StackBlur是一个库,可以基于渐变或...
  • MFC下对位图的旋转

    千次阅读 2017-03-17 16:05:10
    因此决定自己写这样一个旋转函数,函数实现功能:输入位图类和旋转角,返回一个和原大小一样经过旋转之后的位图。(当然此处因为我只关心中心部分的旋转,而且并不会丢失,因此不考虑边缘位置。 当然如果希望返回

              开始做一个项目,需要在MFC下旋转一个位图。遍寻网上各种资源,把代码copy下来发现不能用,悲催至极。

              还有就是网上给出的很多代码本身有很多变量和项目工程有关,有关变量不够明确。因此决定自己写这样一个旋转函数,函数实现功能:输入位图类和旋转角,返回一个和原图大小一样经过旋转之后的位图。(当然此处因为我只关心中心部分的旋转,而且并不会丢失,因此不考虑边缘位置。 当然如果希望返回一个更大的包含完整信息的图片,可以对代码进行稍加修改即可)

              关于旋转的原理,通过坐标变换。这个我就不解释了.

              下面具体的代码:

    //将一幅图片转换角度后返回新的图片
    CBitmap*BmpRotate(CBitmap*cBmp, float Angle)
    {
     BITMAP bmp;
     cBmp->GetBitmap(&bmp);
     BYTE *pBits = new BYTE[bmp.bmWidthBytes*bmp.bmHeight], *TempBits = new BYTE[bmp.bmWidthBytes*bmp.bmHeight];
     cBmp->GetBitmapBits(bmp.bmWidthBytes*bmp.bmHeight, pBits);
     Angle = Angle*3.1415926 / 180;
     int interval=bmp.bmWidthBytes/bmp.bmWidth;
     double rx0 = bmp.bmWidth*0.5;
     double ry0 = bmp.bmHeight*0.5;
     
     for (int j = 0; j < bmp.bmHeight; j ++)
     {
      for (int i = 0; i < bmp.bmWidth; i++)
      {
       for (int k = 0; k < interval; k++)
       {
        TempBits[i*bmp.bmWidthBytes + j*interval + k] = 0xff;
       }
      }
     }
     for (int j = 0; j < bmp.bmHeight; j++)
     {
      for (int i = 0; i< bmp.bmWidth; i++)
      {
       
       int tempI, tempJ;
       tempI = (i-rx0)*cos(Angle) + (j-ry0)*sin(Angle)+rx0;
       tempJ = -(i-rx0)*sin(Angle) + (j-ry0)*cos(Angle)+ry0;
       if (tempI>0&&tempI<bmp.bmWidth)
        if (tempJ>0 && tempJ < bmp.bmHeight)
        {
        for (int m = 0; m < interval;m++)
         TempBits[i*bmp.bmWidthBytes + j*interval+m] = pBits[tempI*bmp.bmWidthBytes + interval*tempJ+m];
        }
      }
     }
     CBitmap *m_bitmap;
     m_bitmap = new CBitmap;
     m_bitmap->CreateBitmapIndirect(&bmp);
     m_bitmap->SetBitmapBits(bmp.bmWidthBytes*bmp.bmHeight, TempBits);
     delete pBits;
     delete TempBits;
     return m_bitmap;
    }
    



    
    展开全文
  • VB 位图进行反白处理 对图片中每一个像素点都进行反白处理
  • 最近项目中用到了GDI+对位图进行了这些操作,现在记录下来,也希望可以帮助到一些需要它的同学 在VS2017环境,MFC对话框程序 显示 对位图的显示 也就是加载,代码方法如下 //1.使用picture控件 将type设置为...

    最近项目中用到了GDI+对位图进行了这些操作,现在记录下来,也希望可以帮助到一些需要它的同学

    在VS2017环境,MFC对话框程序

    显示

    对位图的显示 也就是加载,代码方法如下

    //1.使用picture控件 将type设置为Bitmap
    	CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE);
    
    	HBITMAP hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), Data.Path.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    	if (hbmp == NULL)
    	{
    		AfxMessageBox(L"图片加载有误~"); //提示图片加载错误
    	}
    	
    	pPic->SetBitmap(hbmp);
    	
    //2.使用静态文本控件来限制位图的大小
    	CStatic *pPic = (CStatic *)GetDlgItem(IDC_STATICPIC);
    	CRect rect;
    	pPic->GetWindowRect(&rect);
    
    	HBITMAP hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), Data.Path.c_str(), IMAGE_BITMAP, rect.Width(), rect.Height(), LR_LOADFROMFILE);
    	if (hbmp == NULL)
    	{
    		AfxMessageBox(L"图片加载有误~"); //提示图片加载错误
    	}
    	pPic->ModifyStyle(NULL, SS_BITMAP); //修改静态文本控件的属性
    	pPic->SetBitmap(hbmp);

    如果需要重复加载位图,需要注意hbmp位图句柄的资源的释放,否则会内存泄漏

    释放的方法也很简单;先判断是否存在绘图句柄,如果存在则先释放再创建,如果不存在则创建,最后退出的时候一定记得要在析构函数中 进行DeleteObject;

    if (m_hbmp == NULL)
    		{
    			m_hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), Data.Path.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    		}
    		else
    		{
    			DeleteObject(m_hbmp);
    			m_hbmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), Data.Path.c_str(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
    		}

    下面是在做这部分模块时候的一些问题,还有位图字体的旋转 这个简单来说就是先创建一个位图在上面写字,然后将位图拼接到主位图(就是需要添加文字的位图)上;

    方案;使用GDI+进行图片的绘制

    Q1: 左侧 和 右侧的绘图 如何解决?
    => 主要用到两个函数
    graphic.TranslateTransform(30,10); //源点移动到旋转中心
    graphic.RotateTransform(90); //旋转
    注意:一定要先确定源点位置 然后开始旋转
    图形旋转是以放置位置为原点进行顺时针旋转,所以对应的坐标一定要注意
    不然可能会出现
    Q2: 固定坐标放置文本信息?
    => 方法同上 使用位图拼接来完成
    以最开始生成的二维码Bitmap为底,然后在上面添加其他的Bitmap
    核心函数:imageGraphics.DrawImage(bitmapRight, 383, 10); //imageGraphics表示原图的Graphic对象,bitmapRight表示添加的位图对象
    // 383,10表示位图移动到底位图的坐标
    使用GDI+的方法对位图拼接前 一定要把创建的Bitmap进行处理

    Bitmap *Whitebit = new Bitmap(Whitex, Whitey);
    		for (int x = 0; x < Whitex; x++)
    			for (int y = 0; y < Whitey; y++)
    				Whitebit->SetPixel(x, y, Color(255, 255, 255));

     


    上面处理的方式 使用setPixel将每个像素点都设置为白色 这样显示出来的位图就不是黑的一块显示出来


    配合着函数DrawImage 就可以实现对位图的一个扩展 以及需要遮盖某些区域的内容 都可以这样操作


    另外一种方法使用 Clone函数对Bitmap进行“切割”
    这里切割的意思是 假如有一个宽高为 200*200的位图 我们需要获取到 200*150的数据 
    可以使用如下方法进行位图的操作
    存在一个位图 bitmap 这个位图的宽和高为200 现在新的位图获取其中 宽高170*200的区域的内容

     

     

    int Codex = 200;
    int Codey = 200;
    Bitmap *bitmapCopy = new Bitmap(Code_x - 30, Code_y);
    		Graphics g(bitmapCopy);
    		for (int x = 0; x < Code_x - 30; x++)
    			for (int y = 0; y < Code_y; y++)
    				Whitebit->SetPixel(x, y, Color(255, 255, 255));
    		bitmapCopy->Clone(RectF(0, 0, bitmapCopy->GetWidth(), bitmapCopy->GetHeight()), bitmap->GetPixelFormat());
    		g.DrawImage(*bitmap, 0, 0);



    流程:
    首先对原图进行clone 
    然后输出指定区域的内容

     

    然后可以得到对应的值 这样就实现对位图进行“切割”操作

     

    如果有问题 欢迎留言指正

     

    展开全文
  • Android StackBlur是一个库,可以基于渐变或半径对位图执行模糊效果,并返回结果。 该库基于Mario Klingemann的代码。 该库与Android 1.5版兼容(因此几乎与每台设备兼容)。 该代码提供了一个和一个。 致谢 开发...
  • Brew对位图操作

    2008-08-21 09:45:00
    IBitmap  *  getBitmapHalf(DisplayWeb  * pMe,IImage  * pImage)  2 {  3  IBitmap  * pScreen, * pBitmap, * pBitmap2;  4  ITransform  * pTransform;  5  AEEImageInfo info;...实现图片缩小一半。

    IBitmap * getBitmapHalf(DisplayWeb *pMe,IImage *pImage)
     2ExpandedBlockStart.gif{
     3InBlock.gif    IBitmap *pScreen,*pBitmap,*pBitmap2;
     4InBlock.gif    ITransform *pTransform;
     5InBlock.gif    AEEImageInfo info;
     6InBlock.gif    
     7InBlock.gif    IIMAGE_GetInfo(pImage,&info);
     8InBlock.gif
     9InBlock.gif    pScreen=IDISPLAY_GetDestination(pMe->pApp->a.m_pIDisplay);
    10InBlock.gif    if(pScreen)
    11ExpandedSubBlockStart.gif    {
    12InBlock.gif        IBITMAP_CreateCompatibleBitmap(pScreen,&pBitmap,info.cx,info.cy);
    13InBlock.gif        IBITMAP_CreateCompatibleBitmap(pScreen,&pBitmap2,info.cx,info.cy);
    14InBlock.gif        if(pBitmap && pBitmap2)
    15ExpandedSubBlockStart.gif        {
    16InBlock.gif                IDISPLAY_SetDestination(pMe->pApp->a.m_pIDisplay,pBitmap);
    17InBlock.gif                IIMAGE_Draw(pImage,0,0);
    18InBlock.gif                
    19InBlock.gif                IBITMAP_QueryInterface(pBitmap2,AEECLSID_TRANSFORM,(void*)(ITransform**)&pTransform);
    20InBlock.gif                if(pTransform)
    21ExpandedSubBlockStart.gif                {
    22InBlock.gif                    ITRANSFORM_TransformBltSimple(pTransform,0,0,pBitmap,0,0,info.cx,info.cy,TRANSFORM_SCALE_HALF,COMPOSITE_KEYCOLOR);
    23InBlock.gif                    ITRANSFORM_Release(pTransform);
    24ExpandedSubBlockEnd.gif                }

    25InBlock.gif                else
    26InBlock.gif                    IBITMAP_BltIn(pBitmap2,0,0,info.cx/2,info.cy/2,pBitmap,0,0,AEE_RO_COPY);
    27InBlock.gif                
    28InBlock.gif                IDISPLAY_SetDestination(pMe->pApp->a.m_pIDisplay,NULL);
    29InBlock.gif                                
    30InBlock.gif                IBITMAP_Release(pBitmap);
    31InBlock.gif
    32ExpandedSubBlockEnd.gif        }

    33InBlock.gif        IBITMAP_Release(pScreen);
    34ExpandedSubBlockEnd.gif    }

    35InBlock.gif    return pBitmap2;
    36ExpandedBlockEnd.gif}

    原文出处:

    http://www.cnblogs.com/sharetop/archive/2006/03/21/354973.html

    实现图片缩小一半。

    展开全文
  • VC对位图的操作

    2012-05-10 21:01:41
    想用VC写一个获取BMP的操作(批量的),没接触过MFC GDI... 功能很简单:获得一个文件夹的BMP的宽高,然后添加到该文件的前缀。 ...看了这个帖子下面的代码,不过代码里没有头文件还有创建工程的设置,谁能给一...
  • 这篇博客主要介绍用Java读一个位图文件,并把它打印出来。 一、灵魂画手绘制位图文件 二、使用UltraEdit对文件进行...我们只需要注意文件中,关于这个图片的宽和高的信息是在第二行,如: 之后,关于位图的颜...
  • Android 支持以下三种格式的位图文件:.png(首选)、.jpg(可接受)、.gif(不建议)。 转载于:https://www.cnblogs.com/china-flint/p/10038289.html
  • 次为位图的读取与显示 此源代码是在MFC下生成的
  • 位图加入高斯噪声或者椒盐噪声,以用于轮廓处理。
  •  * 用来对位图进行处理,增加圆角的同时,在右侧和下侧添加阴影。  *  * @param src 源bitmap  * @param corner 圆角像素半径像素数  * @param bgColor 圆角的颜色  * @param shadowWidth 阴影的...
  • 没有的话可以先试试,在Flash里对位图使用9切片缩放功能肯定会让人抓狂的,反而完美支持矢量图的9切片缩放。使用分离和组合来制作。也有使用转换成矢量图来做的。 今晚有空,突然想起上个月跟GS老大学到的“Scale 9....
  •  设置两个菜单项,或是按钮,生成两个函数 一个放大图片的,一个缩小图片的  在视图类里面设置一个成员变量m_rate来控制放大缩小的倍率  void CMy123View::OnZoomout()//放大 { // TODO: 在此添加...
  • HBITMAP对位图数据存储的字节对齐

    千次阅读 2007-05-30 14:39:00
    HBITMAP是常用的GDI对象,而GetDIBits可以从一个HBITMAP对象中获得其对应的位数据。其原型如下:int GetDIBits( HDC hdc, // handle to DC hdc, // handle to DC HBITMAP hbmp, // handle t
  • 朋友做的,做个东西,拿来借鉴一下,发现不错
  • 在没有默认构造函数的情况下使用Custom Serializer或Substitute Pattern序列化类型会更好吗? 将FontFamily序列化为WP7中的隔离存储的示例。
  • 分别是注释和没注释最后一句代码的运行结果:   把注释去掉可以发现,该对象已经水平翻转了一下,不过看过来却好像坐标往左移了200个像素,实际上只是像素变了,坐标并没有变。 不过...
  • 此外,还要注意模板位图在创建时,是反着来的,也就是mask第一行对应画出来的图的最后一行,这么说很难理解,下面给出书中画苍蝇的例子来更好的体会 原理:(对位图的理解) 下面的flydata中一个元素就是8位,分别...
  • 分别是注释和没注释最后一句代码的运行结果:   把注释去掉可以发现,该对象已经水平翻转了一下,不过看过来却好像坐标往左移了200个像素,实际上只是像素变了,坐标并没有变。 不过这里可以发现,当把scaleX会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,868
精华内容 2,747
关键字:

对位图