OpenEdv-开源电子网

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

PNG 解码

[复制链接]

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
发表于 2012-9-26 11:30:24 | 显示全部楼层 |阅读模式
哪位做过STM32解码 png 吗?
下面是几个 C 写的 png 解码,求高手整到 STM32 上来

附个网址:

http://www.libpng.org/pub/png/libpng.html 

http://blog.csdn.net/jsjjms/article/details/1568623 





lpng1512.7z

486.27 KB, 下载次数: 760

png.zip

640.04 KB, 下载次数: 854

png_decoder.rar

80.43 KB, 下载次数: 907

for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-9-28 10:12:29 | 显示全部楼层
//小尺寸的bmp解码,解码filename这个BMP文件
//filename:包含路径的文件名
//x,y,width,height:开窗大小
//acolor:附加的alphablend的颜色(这个仅对32位色bmp有效!!!)
//mode:模式(除了bit5,其他的均只对32位色bmp有效!!!)
//     bit[7:6]:0,仅使用图片本身和底色alphablend;
//              1,仅图片和acolor进行alphablend,并且不适用附加的透明度;
//              2,底色,acolor,图片,一起进行alphablend;
//    bit5:保留
//     bit4~0:0~31,使用附加alphablend的透明程度              
//返回值:0,成功;
//    其他,错误码.
u8 minibmp_decode(u8 *filename,u16 x,u16 y,u16 width,u16 height,u16 acolor,u8 mode)//尺寸小于240*320的bmp图片解码.
{
FIL* f_bmp;
    u16 br;
u8  color_byte;
u16 tx,ty,color;  
//tx,ty的实际坐标
u8 res;
u16 i,j;
u8 *databuf;     //数据读取存放地址
  u16 readlen=1024;     //一次从SD卡读取的字节数长度,不能小于240*3!!!

u8 *bmpbuf;    //数据解码地址
u8 biCompression=0; //记录压缩方式

u16 rowcnt; //一次读取的行数
u16 rowlen;      //水平方向字节数  
u16 rowpix=0; //水平方向像素数   
u8 rowadd; //每行填充字节数

u16 tmp_color;

u8 alphabend=0xff; //代表透明色为0,完全不透明
u8 alphamode=mode>>6; //得到模式值,0/1/2
BITMAPINFO *pbmp;    //临时指针


 
//得到窗体尺寸
picinfo.S_Height=height;
picinfo.S_Width=width;
 

#if BMP_USE_MALLOC == 1 //使用malloc
databuf=(u8*)mymalloc(SRAMIN,readlen); //开辟readlen字节的内存区域
if(databuf==NULL)return IC_MEM_ERR; //内存申请失败.
f_bmp=(FIL *)mymalloc(SRAMIN,sizeof(FIL)); //开辟FIL字节的内存区域 
if(f_bmp==NULL) //内存申请失败.
{  
myfree(SRAMIN,databuf);
return IC_MEM_ERR;
}   
#else
databuf=bmpreadbuf;
f_bmp=&f_bfile;
#endif
res=f_open(f_bmp,(const TCHAR*)filename,FA_READ);//打开文件     
if(res==0)//打开成功.

f_read(f_bmp,databuf,sizeof(BITMAPINFO),(UINT*)&br);//读出BITMAPINFO信息 
pbmp=(BITMAPINFO*)databuf; //得到BMP的头部信息   
color_byte=pbmp->bmiHeader.biBitCount/8; //彩色位 16/24/32  
biCompression=pbmp->bmiHeader.biCompression;//压缩方式
picinfo.ImgHeight=pbmp->bmiHeader.biHeight; //得到图片高度
picinfo.ImgWidth=pbmp->bmiHeader.biWidth;   //得到图片宽度   
//水平像素必须是4的倍数!!
if((picinfo.ImgWidth*color_byte)%4)rowlen=((picinfo.ImgWidth*color_byte)/4+1)*4;
else rowlen=picinfo.ImgWidth*color_byte;
rowadd=rowlen-picinfo.ImgWidth*color_byte; //每行填充字节数
  //开始解码BMP   
color=0;//颜色清空    
tx=0 ;
ty=picinfo.ImgHeight-1;
if(picinfo.ImgWidth<=picinfo.S_Width&&picinfo.ImgHeight<=picinfo.S_Height)
{      
rowcnt=readlen/rowlen; //一次读取的行数
readlen=rowcnt*rowlen; //一次读取的字节数
rowpix=picinfo.ImgWidth; //水平像素数就是宽度 
f_lseek(f_bmp,pbmp->bmfHeader.bfOffBits); //偏移到数据起始位置    
while(1)
{      
res=f_read(f_bmp,databuf,readlen,(UINT *)&br); //读出readlen个字节
bmpbuf=databuf; //数据首地址  
if(br!=readlen)rowcnt=br/rowlen; //最后剩下的行数
if(color_byte==3)   //24位BMP图片
{
for(j=0;j<rowcnt;j++) //每次读到的行数
{
for(i=0;i<rowpix;i++)//写一行像素
{
color=(*bmpbuf++)>>3;       //B
color+=((u16)(*bmpbuf++)<<3)&0X07E0; //G
color+=(((u16)*bmpbuf++)<<8)&0XF800; //R
    gui_phy.draw_point(x+tx,y+ty,color);//显示图片
tx++;
}
bmpbuf+=rowadd;//跳过填充区
tx=0;
ty--;
}
}else if(color_byte==2)//16位BMP图片
{
for(j=0;j<rowcnt;j++)//每次读到的行数
{
if(biCompression==BI_RGB)//RGB:5,5,5
{
for(i=0;i<rowpix;i++)
{
color=((u16)*bmpbuf&0X1F); //R
color+=(((u16)*bmpbuf++)&0XE0)<<1;  //G
  color+=((u16)*bmpbuf++)<<9;       //R,G  
    gui_phy.draw_point(x+tx,y+ty,color);//显示图片
tx++;
}
}else  //RGB 565
{
for(i=0;i<rowpix;i++)
{  
color=*bmpbuf++;   //G,B
  color+=((u16)*bmpbuf++)<<8; //R,G  
   gui_phy.draw_point(x+tx,y+ty,color);//显示图片
tx++;
}
}
bmpbuf+=rowadd;//跳过填充区
tx=0;
ty--;
}
}else if(color_byte==4) //32位BMP图片
{
for(j=0;j<rowcnt;j++) //每次读到的行数
{
for(i=0;i<rowpix;i++)
{
color=(*bmpbuf++)>>3;       //B
color+=((u16)(*bmpbuf++)<<3)&0X07E0; //G
color+=(((u16)*bmpbuf++)<<8)&0XF800; //R
alphabend=*bmpbuf++; //ALPHA通道
if(alphamode!=1) //需要读取底色
{
tmp_color=gui_phy.read_point(x+tx,y+ty);//读取颜色    
    if(alphamode==2)//需要附加的alphablend
{
tmp_color=alpha_blend(tmp_color,acolor,mode&0X1F); //与指定颜色进行blend  
}
color=alpha_blend(tmp_color,color,alphabend/8); //和底色进行alphablend
}else tmp_color=alpha_blend(acolor,color,alphabend/8); //与指定颜色进行blend
  gui_phy.draw_point(x+tx,y+ty,color);//显示图片    
tx++;//x轴增加一个像素    
}
bmpbuf+=rowadd;//跳过填充区
tx=0;
ty--;
}

}
if(br!=readlen||res)break;  
}  
}
f_close(f_bmp);//关闭文件      
}else res=PIC_SIZE_ERR;//图片尺寸错误
#if BMP_USE_MALLOC == 1 //使用malloc
myfree(SRAMIN,databuf);  
myfree(SRAMIN,f_bmp);  
#endif
return res;
}

//快速ALPHA BLENDING算法.
//src:源颜色
//dst:目标颜色
//alpha:透明程度(0~32)
//返回值:混合后的颜色.
u16 gui_alpha_blend565(u16 src,u16 dst,u8 alpha)
{
u32 src2;
u32 dst2;  
//Convert to 32bit |-----GGGGGG-----RRRRR------BBBBB|
src2=((src<<16)|src)&0x07E0F81F;
dst2=((dst<<16)|dst)&0x07E0F81F;   
//Perform blending R:G:B with alpha in range 0..32
//Note that the reason that alpha may not exceed 32 is that there are only
//5bits of space between each R:G:B value, any higher value will overflow
//into the next component and deliver ugly result.
dst2=((((dst2-src2)*alpha)>>5)+src2)&0x07E0F81F;
return (dst2>>16)|dst2;  
}  
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-9-26 14:33:09 | 显示全部楼层
看你这代码也太大了点吧....
难怪没人搞png解码,有原因的.呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-26 14:52:16 | 显示全部楼层
是啊,原子哥你能把这个整到 STM32 上去不?呵呵

如果可以解码 png 图片,那可以做出很漂亮的图标啊。

例如下面一个 windows media player 的png图标,图标图案的边缘都是有一层半透明的黑色,想必png里解码应该是读取背景色与这层淡黑色混合再显示吧,图标与背景好像有一层“过渡”,这样应该可以做到类似抗锯齿效果吧。

如果是转成 bmp 或者 jpg 做图标,就没有这种效果了啊,感觉粗糙了许多,没那么美观,呵呵,而且可能还得各个图标PS下









for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-9-26 22:33:02 | 显示全部楼层
可以讲png直接转换为带alpha通道的bmp,然后显示就可以喝png一样的效果.
你看我们豪华版的主界面,就没你说的这个问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-27 13:48:34 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
那带alpha通道的bmp怎么解码实现透明呢?

for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2012-9-11
在线时间
4 小时
发表于 2012-9-27 16:10:15 | 显示全部楼层
半透明原理: 在数据写入显存之前,读取相应像素点值(就是屏幕上这个点的RGB值),然后与新的数据按一定的规则混合之后,再写入相应像素点的显存。
 这样主要问题关键是混合算法。混合算法目前在游戏上常用到的算法是AlphaBlend。
计算公式如下:假设一幅图象是A,另一幅透明的图象是B,那么透过B去看A,看上去的图象C就是B和A的混合图象,设B图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明),Alpha混合公式如下:   R(C)=(1-alpha)*R(B)+alpha*R(A)   G(C)=(1-alpha)*G(B)+alpha*G(A)   B(C)=(1-alpha)*B(B)+alpha*B(A)   R(x)、G(x)、B(x)分别指颜色x的RGB分量原色值。从上面的公式可以知道,Alpha其实是一个决定混合透明度的数值。

对于一般的位图,想要做成一个透明图标,我的方法是(有点笨,但可以实现):用画图软件把想要透明的部分自己修改为某种特定色,需要显示的部分不含有或尽量少有这种颜色(我一般是设为R:0、G:0、B:0或R:255、G:255、B:255)比如我们设置为R:0、G:0、B:0,那需要显示的部分也有R:0、G:0、B:0怎么办呢?我的做法是把它改为R:1、G:0、B:0,然后保存。在显示时判断当前颜色是自己设置的特定颜色,那就跳过此像素不显示。结果就实现了透明效果。如下图

回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-9-27 17:25:45 | 显示全部楼层
回复【6楼】TYZZD:
---------------------------------
兄台,你说的这方法貌相很像ico的方法
ico的方法如下:
ico图标文件实际上就是两幅bmp图片文件的合集,在文件头中定义了这两幅bmp相应的位置,两幅bmp中有一副是全白的,中间有图像的地方全黑,作用是和屏幕目前显示的点相与(&)操作后写入显存,这样做的结果就是,要现实图标的位置被清空了,写进黑色了,其他位置保留原来颜色,因为1&1=1,1&0=0,16位颜色数据(例如:1010101010101010&1111111111111111=1010101010101010)操作后不变。ico的第二副图就是背景全黑,有图标的地方就有颜色,这个颜色是图标本身图案的颜色,在第一副图和屏幕上的点相与(&)后的位置里面,再读出屏幕上的点,和这幅北京全黑的图相或(|),这样的目的就是,图像有黑色的地方全部填充了屏幕当前背景了,屏幕之前和背景全白的图与后的区域是黑色,就和现在的这幅背景全黑的图中有图标的位置相或后,填充了该图标的颜色,从而实现了背景透明效果。
很多人说ico图标解码用的RAM大,的确大了点,其实也大不到哪里去,其实不用把ico全部读出,只需要读出文件头,和包含的两个bmp图的信息和偏移位置就可以了,还需要定义一个过度的2字节的颜色点,实际占用ram,1k应该是足够多的,ico图标的解码我没有深入了解,就只知道这种原理,各位仁兄可以利用这个原理,来制作两幅bmp图实行类似解码来实现透明效果。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-27 23:26:04 | 显示全部楼层
回复【6楼】 TYZZD :
---------------------------------

这种方法是可行的,但是图标图案与背景图片的叠加的边缘之处可能就会有点不圆滑,也做不到抗锯齿效果吧。因为这样没有一个与背景色进行混合的过程,也就是没有做这一步吧:

u16 Blend565(u16 src,u16 dst,u8 alpha) 
    u32 src2; 
    u32 dst2;  
    src2=((src<<16)|src)&0x07E0F81F; 
    dst2=((dst<<16)|dst)&0x07E0F81F;    
    dst2=((((dst2-src2)*alpha)>>5)+src2)&0x07E0F81F; 
    return ((dst2>>16)|dst2);   
}  

仔细看电脑上的扣扣图标,放大后:


图片中红框框里面有企鹅的阴影,这层阴影不是简单的黑色,而是半透明的,是与背景混色了吧,也就是透过这层半透明的阴影还可以看到背景图片的效果。如果把一张图片不要显示的地方弄成这张图片里最少的颜色(颜色A),显示时是颜色A就跳过,可以把这个不规则图标图案显示出来,但是不能达到这种效果咯。这样也达到了要求,但是看上去感觉就是没有那么爽,拿着和电脑,安卓对比,感觉差距太大了,虽然STM32比不起这些来,但是做个好看的图标应该还是可以的吧。

原子哥豪华版里面好像做到了跟电脑这样:


不知是PS整张图片还是背景图片和图标叠加的,图标叠加的画可以实现安卓那种滑动效果啊。










for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-27 23:33:43 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
带alpha通道的bmp解码 是不是会有个 读液晶背景色的过程? 原子哥 指点指点
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-27 23:47:45 | 显示全部楼层
回复【7楼】 Tardis :
---------------------------------
嗯,ico文件是这样的,但是好像比这个更复杂,带半透明这样的信息。用两张 bmp 做应该只能够做到 图标不是真正图案区域 不会把背景覆盖掉。
但是这样的半透明地方应该就不好处理了,如下图









for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-9-28 00:12:14 | 显示全部楼层
回复【8楼】subo19920716:
---------------------------------
是图标叠加.
STM32F1的速度不够快,想做andriod那速度,得STM32F4.

回复【9楼】subo19920716:
---------------------------------
是的,必须先读背景色,然后与要写入的颜色做alphablend,之后再写入,就是这个效果了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-28 00:22:45 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
原子哥你的图标叠加是怎么做的? 求指点
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-28 00:23:27 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
是不是得等到10.8之后才方便透漏?呵呵
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-9-28 01:42:14 | 显示全部楼层
回复【12楼】subo19920716:
---------------------------------
先画底图,然后画一个带alpha通道的bmp上去,就是了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-28 04:22:58 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
嗯,问题是这个  带alpha通道的bmp  怎么画? 画这个带alpha通道的bmp应该要调用读背景图片的函数吧?好像还没见过bmp解码里带这个的呀,原子哥能否上点代码?
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-28 11:34:23 | 显示全部楼层
回复【16楼】正点原子:
------------------------------
呵呵,好东西
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

26

主题

194

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1175
金钱
1175
注册时间
2011-8-20
在线时间
21 小时
 楼主| 发表于 2012-9-28 11:36:40 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
灰常感谢原子哥了
for( int i=0; i<(1.0/0); i++ ) { for( int j=0; j<365; j++) money ++; age ++; if( age > 30 ) ChangeJob( Boss ); } 脸上的痘痘提醒我?我还年轻?口袋的米米告诉我?我仍需努力
回复 支持 反对

使用道具 举报

19

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2016-6-8
在线时间
47 小时
发表于 2016-9-12 22:22:08 | 显示全部楼层
16楼东东在哪里?
回复 支持 反对

使用道具 举报

37

主题

477

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2285
金钱
2285
注册时间
2017-8-24
在线时间
375 小时
发表于 2019-12-16 13:47:22 | 显示全部楼层
PNG和JPG有什么不同吗?
天然懒,天然呆
能吃会睡,未来可期
回复 支持 反对

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3882
金钱
3882
注册时间
2016-7-8
在线时间
817 小时
发表于 2020-12-30 09:45:23 | 显示全部楼层
请问png图片可以当作bmp格式的图片来解码吗
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2022-2-3
在线时间
6 小时
发表于 2023-4-12 07:42:48 | 显示全部楼层
u8 alphabend=0xff     alphabend/8等于多少
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2022-2-3
在线时间
6 小时
发表于 2023-4-12 07:49:19 | 显示全部楼层
u8 alphabend=0xff     alphabend/8等于多少
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2022-2-3
在线时间
6 小时
发表于 2023-4-12 07:52:34 | 显示全部楼层
u8 alphabend=0xff     alphabend/8等于多少
回复 支持 反对

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2022-2-3
在线时间
6 小时
发表于 2023-4-12 07:55:29 | 显示全部楼层
u8 alphabend=0xff     alphabend/8等于多少
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 13:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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