Android实现图片叠加功能
前几天工作碰到这样一个需求,将二维码与一张海报叠加,并将合成后的海报分享到微信。由于经验不足,在实现功能的过程中,碰到了这样或那样的问题,我就来分享一下我碰到的坑。
一.图片叠加的处理
处理思路是在一张新建画布上分别将两张图片绘制出来
1.首先获取需要两张图片,并转成Bitmap类型
Bitmapbg = ((BitmapDrawable) getResources().getDrawable( R.drawable.background)).getBitmap(); Bitmapfg = ((BitmapDrawable) getResources().getDrawable( R.drawable.foreground)).getBitmap();
2.创建一张大小和背景图一致的位图
intbgWidth=bg.getWidth(); intbgHeight=bg.getHeight(); intfgWidth=fg.getWidth(); //前景图宽度,用于后面计算前景图的绘制坐标
/*这里不详细解释RGB_565和RGB_8888,RGB_6666的区别,我是因为后来分享到微信的过程中,发现图片过大,就尽量让图片更小,值得一提的是,我有试过RGB_6666,发现getConfig()图片的参数并没有变化,看了源码才知道,即使是选择RGB_6666,也会被转成RGB_8888,应该是画质太惨目忍睹了,Google便放弃了RGB_6666了*/
Bitmapnewbmp=Bitmap.createBitmap(bgWidth,bgHeight,Bitmap.Config.RGB_565);
3.新建画布,并画出背景图和前景图
Canvascv=newCanvas(newbmp); //drawbginto //在0,0坐标开始画入bg cv.drawBitmap(bg,0,0,null); //drawfginto //开始画入fg,可以从任意位置画入,具体位置自己计算 cv.drawBitmap(fg,(bgWidth-fgWidth)/2,bgHeight/4*3-500,null);
二.图片压缩处理
在使用微信sdk分享图片的过程中,发现图片过大会导致微信拉起失败,处理思路是将缩放至原来的一半,图片占用内存自然就减少了,是不是简单粗暴呀
Matrixmatrix=newMatrix(); matrix.setScale(0.5f,0.5f); Bitmap compbmp=Bitmap.createBitmap(newbmp,0,0,newbmp.getWidth(), newbmp.getHeight(),matrix,true);
三.最终效果

以上所述是小编给大家介绍了Android图片叠加功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
相关文章
Android开发Jetpack组件ViewModel使用讲解
这篇文章主要介绍了Android Jetpack架构组件 ViewModel详解,ViewModel类让数据可在发生屏幕旋转等配置更改后继续存在,ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据,感兴趣可以来学习一下2022-08-08
Android实现音频条形图效果(仿音频动画无监听音频输入)
这篇文章主要介绍了Android实现音频条形图效果(仿音频动画无监听音频输入)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-09-09
Android中使用BitmapShader类来制作各种图片的圆角
这篇文章主要介绍了Android中使用BitmapShader类来制作各种图片的圆角的方法,文中随教程讲解带出的例子可以轻松控制图片圆形的变换,很好很强大,需要的朋友可以参考下2016-04-04
Android结合kotlin使用coroutine的方法实例
这篇文章主要给大家介绍了关于Android结合kotlin使用coroutine的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-12-12


最新评论