OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12015|回复: 20

请教原子,这个图片界面的图标边缘是如何过滤的??

[复制链接]

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2011-12-18 18:03:03 | 显示全部楼层 |阅读模式
如题,如下如,怎么我弄得图标都有白框


世界如此美好,好好珍惜每一天吧!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-18 18:59:55 | 显示全部楼层
回复【楼主位】dzng11:
---------------------------------
图片看不到哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

82

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2011-10-27
在线时间
0 小时
发表于 2011-12-18 19:17:41 | 显示全部楼层
回复【楼主位】dzng11:
---------------------------------
你用什么软件做的图片?图片背景色不对。
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2011-12-18 19:28:13 | 显示全部楼层
我就是想弄成楼主位那个效果,可是现实出来的四个脚是白色,怎么把这个白色弄成我的背景色



世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-18 19:50:58 | 显示全部楼层
看不到图.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-18 19:54:02 | 显示全部楼层
回复【4楼】dzng11:
---------------------------------
看到了,百度alpha blending.
你这个得用alphablending才可以.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2011-12-18 20:48:10 | 显示全部楼层
看你的例程好像也没用哦,怎么就能实现那个效果,好像也是将读到的数据直接发出来显示的。

BOOL BmpDecode(FileInfoStruct *BmpFileName)
{
    u16 count;         
u8  rgb ,color_byte;
u16 x ,y,color,tmp_color ;   
u16 uiTemp;    //x轴方向像素计数器 
u16 countpix=0;//记录像素   
//x,y的实际坐标
u8  realx=0;
u16 realy=0;
u8  yok=1;      
BITMAPINFO *pbmp;//临时指针 
CurFile=BmpFileName; 
F_Open(CurFile);//打开文件     
F_Read(CurFile,jpg_buffer);//读出512个字节   
pbmp=(BITMAPINFO*)jpg_buffer;//得到BMP的头部信息   
count=pbmp->bmfHeader.bfOffBits;        //数据偏移,得到数据段的开始地址
color_byte=pbmp->bmiHeader.biBitCount/8;//彩色位 16/24/32  
PICINFO.ImgHeight=pbmp->bmiHeader.biHeight;//得到图片高度
PICINFO.ImgWidth=pbmp->bmiHeader.biWidth;  //得到图片宽度   
//水平像素必须是4的倍数!!
if((PICINFO.ImgWidth*color_byte)%4)
uiTemp=((PICINFO.ImgWidth*color_byte)/4+1)*4;
else
uiTemp=PICINFO.ImgWidth*color_byte;     
AI_Drow_Init();//初始化智能画图     
//开始解码BMP       
x =0 ;
y=PICINFO.ImgHeight;
rgb=0;      
realy=y*PICINFO.Div_Fac/10000;
while(1)
{  
while(count<512)  //读取一簇512扇区 (SectorsPerClust 每簇扇区数)
    {
if(color_byte==3)   //24位颜色图
{
switch (rgb) 
{
case 0:
tmp_color = jpg_buffer[count]>>3 ;
color |= tmp_color;
break ;    
case 1: 
tmp_color = jpg_buffer[count]>>2 ;
tmp_color <<= 5 ;
color |= tmp_color ;
break;   
case 2: 
tmp_color = jpg_buffer[count]>>3 ;
tmp_color <<= 11 ;
color |= tmp_color ;
break ;
}   
}
else
{
if(color_byte==2)  //16位颜色图
{
switch(rgb)
{
case 0: 
color=jpg_buffer[count]&0x1f;
    tmp_color=jpg_buffer[count]>>5;
tmp_color<<=6;
color|=tmp_color;
break ;   
case 1:    
tmp_color=jpg_buffer[count];
tmp_color<<=9 ;
color |= tmp_color ;
break ;  
}      
}
else 
{
if(color_byte==4)//32位颜色图
{
switch (rgb)
{
case 0:  
tmp_color=jpg_buffer[count];
color|=tmp_color>>3;
break ;     
case 1:  
tmp_color=jpg_buffer[count];
tmp_color>>=2;
color|=tmp_color<<5;
break ;   
case 2:  
tmp_color=jpg_buffer[count];
tmp_color>>=3;
color|=tmp_color<<11;
break ;  
case 3:break ;   
}     
}  
}     
}//位图颜色得到
rgb++;   
count++ ;   
if(rgb==color_byte) //水平方向读取到1像素数数据后显示
{
if(x<ICINFO.ImgWidth)        
{
realx=x*PICINFO.Div_Fac/10000;//x轴实际值
if(IsElementOk(realx,realy,1)&&yok)//符合条件
{               
POINT_COLOR=color;  
LCD_DrawPoint(realx+PICINFO.S_XOFF,realy+PICINFO.S_YOFF-1); 
}        
}
x++;//x轴增加一个像素 
color=0x00; 
rgb=0;     
}
countpix++;//像素累加
if(countpix>=uiTemp)//水平方向像素值到了.换行
{  
y--; 
if(y<=0)return TRUE; 
realy=y*PICINFO.Div_Fac/10000;//实际y值改变  
if(IsElementOk(realx,realy,0))yok=1;//此处不改变PICINFO.staticx,y的值  
else yok=0; 
x=0; 
countpix=0;
color=0x00;
rgb=0;
}  

    if(!F_Read(CurFile,jpg_buffer))break;//读出512个字节,读数失败时自动退出
  count=0 ;
}  
return TRUE;//BMP显示结束.  
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-12-18 23:08:40 | 显示全部楼层
回复【7楼】dzng11:
---------------------------------
因为我的本身就是白色的底色!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2011-12-19 10:59:20 | 显示全部楼层
回复【8楼】正点原子:
回复【7楼】dzng11: --------------------------------- 因为我的本身就是白色的底色!!!
---------------------------------
吐血,本身就是白色、、、、
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

46

主题

284

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2011-6-20
在线时间
0 小时
发表于 2012-1-3 20:33:07 | 显示全部楼层
呵呵  才发现!
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-1-4 12:42:30 | 显示全部楼层
搞这个的话,估计要改程序,不知道bmp图片中透明的数据啊什么,如果知道,可以加判语句,判断是透明的话,直接跳过不写点,如果这图标没弄好,那加壁纸就没有效果了。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

1

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2012-1-4
在线时间
0 小时
发表于 2012-1-5 08:31:41 | 显示全部楼层
处理一下你的图标不就ok了吗?
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2012-1-5 15:52:35 | 显示全部楼层
回复【12楼】zhenzi:
处理一下你的图标不就ok了吗?
---------------------------------
如果这样换背景颜色,就又不行了
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

6

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2011-2-28
在线时间
8 小时
发表于 2012-5-3 18:08:18 | 显示全部楼层
  有点意思,改进下。
我会很乐意与你交流的。
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2011-11-21
在线时间
0 小时
发表于 2012-5-6 13:21:22 | 显示全部楼层
回复【13楼】dzng11:
回复【12楼】zhenzi:
处理一下你的图标不就ok了吗?
---------------------------------
如果这样换背景颜色,就又不行了
---------------------------------
可以加一个简单的图像处理程序,首先检测当前点是否是图片的边缘,然后在检测这个点是不是白色,如果都符合,这个点不显示或者显示背景色就是了。
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2012-5-6 14:22:30 | 显示全部楼层
检测颜色是不行的,我检测白色显示偶的背景色效果如图,这样处理在图片边缘效果很不好,图片边缘有好多近视与白色,但又不是白色的像素点

世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2011-11-21
在线时间
0 小时
发表于 2012-5-6 15:21:03 | 显示全部楼层
回复【16楼】dzng11:
检测颜色是不行的,我检测白色显示偶的背景色效果如图,这样处理在图片边缘效果很不好,图片边缘有好多近视与白色,但又不是白色的像素点

---------------------------------
咕~~(╯﹏╰)b,那限制一个范围啊,不一定非要一定是白色了才不显示啊,而且范围一般好像是rgb都大于127吧,这样可以直接把白色或者近似与白色的全部滤掉,我以前做dsp图像处理就用的类似方法,只不过是在hsi空间下过滤的,不过核心方法都是一样
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2012-5-6 18:16:01 | 显示全部楼层
--------------------------------- 咕~~(╯﹏╰)b,那限制一个范围啊,不一定非要一定是白色了才不显示啊,而且范围一般好像是rgb都大于127吧,这样可以直接把白色或者近似与白色的全部滤掉,我以前做dsp图像处理就用的类似方法,只不过是在hsi空间下过滤的,不过核心方法都是一样
---------------------------------
我已经判断了,并不是说要全白16位色(FFFF)我只去RGB高三位色就是上面那个效果,完全没样子

不知到你是不是真的那样搞过,实际是不行的,图标中间也有好多白色,或者接近白色,也会一同过滤的,再说边缘过滤,很难判断的,图标不规则,不想ipho都是规则图标,
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-6 18:51:05 | 显示全部楼层
回复【16楼】dzng11:
---------------------------------
用alphablend.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
 楼主| 发表于 2012-5-6 18:54:34 | 显示全部楼层
回复【19楼】正点原子:
回复【16楼】dzng11: --------------------------------- 用.
---------------------------------
曾经在ourdev论坛找到alphablend的代码,没整出来,只能弄个透明色,好像和边缘没关系啊,不知道那些png图片怎么搞得
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2011-11-21
在线时间
0 小时
发表于 2012-5-6 19:28:48 | 显示全部楼层
回复【18楼】dzng11:
---------------------------------
没做过图标的边缘过滤,我使用dsp处理棉花的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 20:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表