bcb都有什么处理bmp图片的方法?最好把代码也给我 谢谢

如题所述

BCB显示bmp显示图像基本自带GUI控件都可以支持,但要处理bmp,比如格式转化,图像模糊、锐化等特效,有两种常规方法:
1、使用第三方组建(格式转化),这些网上可以找到,如下参考资料。
2、自己解析bmp数据格式,通过RGB运算,将图形图像模糊、锐化、雕刻
如下代码片段
void S_Filter(Graphics::TBitmap *Source,Graphics::TBitmap *NewPic,int Div,int xg)//图片效果
{
//0:模糊1:锐化3:雕刻
int flt[9];
switch (xg)
{
case 0:
{
flt[0]=5;flt[1]=5;flt[2]=5;
flt[3]=5;flt[4]=60;flt[5]=5;
flt[6]=5;flt[7]=5;flt[8]=5;
};
break;
case 1:
{
flt[0]=0;flt[1]=-5;flt[2]=0;
flt[3]=-5;flt[4]=30;flt[5]=-5;
flt[6]=0;flt[7]=-5;flt[8]=0;
};
break;
default:
{
flt[0]=-15;flt[1]=-15;flt[2]=0;
flt[3]=-15;flt[4]=15;flt[5]=15;
flt[6]=0;flt[7]=15;flt[8]=0;
};
}

int XX[3];
BYTE *ptr,*ptru,*ptrd,*ptr1;

NewPic->Assign(Source);
for (int y = 1; y < NewPic->Height-1; y++)
{
ptr=(BYTE *)NewPic->ScanLine[y];
ptr1=(BYTE *)Source->ScanLine[y];
ptru=(BYTE *)Source->ScanLine[y-1];
ptrd=(BYTE *)Source->ScanLine[y+1];
for(int x=3;x<(Source->Width-1)*3;x+=3)
{
XX[0]=0;XX[1]=0;XX[2]=0;
for(int i=-1;i<=1;i++)
for(int j=0;j<3;j++)
// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=390&d=c3q44m
XX[j]+=ptr1[x+3*i+j]*flt[4+i];
for(int i=-1;i<=1;i++)
for(int j=0;j<3;j++)
XX[j]+=ptru[x+3*i+j]*flt[1+i];
for(int i=-1;i<=1;i++)
for(int j=0;j<3;j++)
XX[j]+=ptrd[x+3*i+j]*flt[7+i];
for (int i=0;i<3;i++)
{
XX[i]=XX[i]/Div;
XX[i]=MAX(XX[i],0);
XX[i]=MIN(XX[i],255);
ptr[x+i]=XX[i];
}
}
}
}

BCB的,建议去:www.ccrun.com 老牌子BCB资料网。追问

用BCB编译不通过啊,可能是头文件需要定义的事 但是我不知道咋定义

追答

是什么样的错误呢?

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-10
用BCB编译不能通过啊 这是这么回事

bcb都有什么处理bmp图片的方法?最好把代码也给我 谢谢
BCB显示bmp显示图像基本自带GUI控件都可以支持,但要处理bmp,比如格式转化,图像模糊、锐化等特效,有两种常规方法:1、使用第三方组建(格式转化),这些网上可以找到,如下参考资料。2、自己解析bmp数据格式,通过RGB运算,将图形图像模糊、锐化、雕刻 如下代码片段 void S_Filter(Graphics::TBitmap *Sour...

怎么用C语言读入、转存一个 BMP图片啊。。。
clrTableBmp[y*nWidth+x].iBlue =pData[x*nBit+z*bmWidthBytes];clrTableBmp[y*nWidth+x].iGreen =pData[x*nBit+1+z*bmWidthBytes];clrTableBmp[y*nWidth+x].iRed=pData[x*nBit+2+z*bmWidthBytes];sprintf(cBit,",%d:%d:%d:%d",y*nWidth+x,pData[x*nBit+z*bmWidthByt...

求助:VC如何实现图片的放大和缩小?
用StretchBlt函数即可实现,参考代码如下:void CImgWnd::OnPaint(){ CPaintDC dc(this); \/\/ device context for painting \/\/获得窗口大小 CRect r; GetClientRect(&r); \/\/填充背景 HBRUSH brush = (HBRUSH)::GetStockObject(GRAY_BRUSH); ::FillRect(dc.m_hDC,&r,brush...

如何定一个.bmp文件,并把它读出来
以二进制的方式写文件就行了 标准 C 的 fopen, 以 "wb" 方式打开文件, 然后 fwrite 写入就是了

在BCB里画图如何抗锯齿?GDI+好还是AGG好呢?我要用BCB编写一个dll,用在...
GDI+本身就有反锯齿的功能,至于你说的精度要求很高,就不晓得要高到什么程度,建议你用你所知道的,并且认为质量可靠的图形库,写点测试代码。

PAL或者NTSC制式 BT.656(YUV 4:2:2) 转化为BMP格式图片(RGB)算法
存放起来。但是通过把亮度与颜色信息分离,并对亮度值取更高的分辨率可以更有效地表示一个颜色图像。YCbCr颜色空间和它的变换(通常写为YUV)是一种流行而高效的表示一个颜色图像的方法。Y是亮度值,由R,G,B的加权平均可以 得到: Y=krR + kgG + kbB 这里k是加权因子。颜色信号可以由不同的颜色差别...

用c++怎么输出一张图片?
你可以通过用户自定义控件来显示图片,当然也可以建立内存描述表,然后导入图片,然后将内存描述表中的图片传到对话框窗口上,但是要麻烦的很多,建议使用第一种,但是找不到ActiveX控件的话也只有用第二种方法了。第2种的具体方法:CPaintDC dc(this);\/\/建立设备描述表 HBITMAP hbitmap= ::LoadBitmap(...

...图片?(就是说在txt里写图片编码,然后存为bmp图片)
有可能实现吗?刚才我用记事本程序打开一张bmp,看到的都是乱码,把这些乱码另存为bmp却无法还原图像。或许可以实现,可是那样专业的代码,其大小随随便便都得几时上百兆再往上跑?恐怕不用原始编程语言都不行。在txt里写图片编码,然后存为bmp图片?基本上那工作量之大之繁琐,哪怕再小的图片都是极...

电脑任务管理器里的进程我看不懂,谁能教教我啊
对9x系统,只要系统中有mdm.exe存在,就有可能产生以fff开头的怪文件。可以按下面的方法让系统停止运行mdm.exe来彻底删除以fff开头的怪文件:首先按「ctrl+alt+del」组合键,在弹出的「关闭程序」窗口中选中「mdm」,按「结束任务」按钮来停止mdm.exe在后台的运行,接着把mdm.exe(在c:\/windows\/system目录下)改名为...

谁能给我详细一一的介绍一下进程?
运行在这台计算机上 SNMP 管理程序。 UtilMan.exe 从一个窗口中启动和配置辅助工具。我给你个建议,就是打开WINDOWS的服务 可以看到每个服务的具体内容 上面是我找的,不知道有帮助没有 参考资料: http:\/\/zhidao.baidu.com\/question\/12843546.html?si=3 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 ...

相似回答