Android实现图片叠加功能

所属分类: 软件编程 / Android 阅读数: 35
收藏 0 赞 0 分享

前几天工作碰到这样一个需求,将二维码与一张海报叠加,并将合成后的海报分享到微信。由于经验不足,在实现功能的过程中,碰到了这样或那样的问题,我就来分享一下我碰到的坑。

一.图片叠加的处理

处理思路是在一张新建画布上分别将两张图片绘制出来

        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中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多