欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android实现图片叠加功能

时间:2022-09-28 09:39:06|栏目: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);

三.最终效果

上一篇:基于Flutter制作一个心碎动画特效

栏    目:Android代码

下一篇:Android实现扫码功能

本文标题:Android实现图片叠加功能

本文地址:http://www.codeinn.net/misctech/214878.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有