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编程实现图片背景渐变切换与图层叠加效果
  • Android编程实现支持拖动改变位置的图片中叠加文字功能示例
  • Android实现图片叠加效果的两种方法
  • android中TabHost的图标(48×48)和文字叠加解决方法
(0)

相关推荐

  • Android编程实现图片背景渐变切换与图层叠加效果

    本文实例讲述了Android编程实现图片背景渐变切换与图层叠加效果.分享给大家供大家参考,具体如下: 本例要实现的目的: 1.图片背景渐变的切换,例如渐变的从红色切换成绿色. 2.代码中进行图层叠加,即把多个Drawable叠加在一起显示在一个组件之上. 效果图: 代码很简单: (1)布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

  • android中TabHost的图标(48×48)和文字叠加解决方法

    开发过程中,有时候图标稍微大点,比如48×48的时候,文字就会和图标叠加起来,解决方法如下: 复制代码 代码如下: TabWidget tw = tabHost.getTabWidget(); for (int i = 0; i < tw.getChildCount(); i++) {     TextView tv=(TextView)tw.getChildAt(i).findViewById(android.R.id.title);     ImageView iv=(ImageView)t

  • Android编程实现支持拖动改变位置的图片中叠加文字功能示例

    本文实例讲述了Android编程实现支持拖动改变位置的图片中叠加文字功能.分享给大家供大家参考,具体如下: 之所以做了这么一个Demo,是因为最近项目中有一个奇葩的需求:用户拍摄照片后,分享到微信的同时添加备注,想获取用户在微信的弹出框输入的内容,保存在自己的服务器上.而事实上,这个内容程序是无法获取的,因此采取了一个折衷方案,将文字直接写在图片上. 首先上Demo效果图: 功能: 1.用户自由输入内容,可手动换行,并且行满也会自动换行. 2.可拖动改变图片中文本位置(文字不会超出图片区域).

  • Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.分享给大家供大家参考,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(View v) { // 防止出现Immutable bitmap passed to Canvas constructor错误 Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.apple).copy(Bi

  • Android实现图片叠加功能

    前几天工作碰到这样一个需求,将二维码与一张海报叠加,并将合成后的海报分享到微信.由于经验不足,在实现功能的过程中,碰到了这样或那样的问题,我就来分享一下我碰到的坑. 一.图片叠加的处理 处理思路是在一张新建画布上分别将两张图片绘制出来 1.首先获取需要两张图片,并转成Bitmap类型 Bitmapbg = ((BitmapDrawable) getResources().getDrawable( R.drawable.background)).getBitmap(); Bitmapfg = ((

  • Android实现图片选择器功能

    本文实例为大家分享了Android实现图片选择器功能的具体代码,供大家参考,具体内容如下 图片选择功能用的是GitHub上的依赖库,网址 先来看下我运行的效果图如下所示: 该依赖库是Android平台上拍照/录像,图片/视频选择,编辑和压缩的一站式解决方案. 添加依赖,在app->build.gradle里面添加依赖 //图片/视频选择.预览.编辑与拍照 implementation 'com.github.guoxiaoxing:phoenix:1.0.15' 初始化: public clas

  • Android实现图片查看功能

    一.效果图 二.支持功能 本地与网络图片 可用于各大图片加载框架(Fresco,Glide,Picasso) 图片缩放 放大后的图片惯性滑动 下拉缩小退出 三.核心实现方法 3.1 缩放 Matrix.postScale(float sx, float sy, float px, float py) 参数解析: sx: 目标宽度 / 现有宽度 sy: 目标高度 / 现有高度 (px,py): 缩放焦点坐标 使用示例: /** * 缩放手势监听 */ private ScaleGestureDet

  • Android 微信图片分享功能

    我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式.官方链接 可直接查看,不再赘述. 本文要解决的问题是,分享本地带二维码的图片给微信好友和朋友圈.朋友圈图片能够实现长按识别,给微信好友对话框的图片 在 iOS 可以正常识别,但是 Android 端却不能识别 ,为什么? 以下引用网友的回答: 经过分析和功能对比,android wechat app 中有两种图片浏览方式,图片预览,和图片本地发送后的打开查看(这个有识别动作)页面.预览图片功能中,不包含长按手势的识别功能,仔细

  • Android实现图片拖拉功能

    这次记录的是实现Android图片用手拖拉的功能,,供大家参考,具体内容如下 编译环境:eclipse Android版本4.0 创建工程过程略 实现图片在页面内的拖拉 原理图: 计算出手指移动的位移,通过matrix矩阵对象,将图片空间矩阵化之后根据手指位移让矩阵移动, 从而达到图片移动的效果 实现图片在页面内的拖拉 mian.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Android实现图片区域裁剪功能

    今天做的就是关于实现图片的区域裁剪功能.由于项目功能的需要笔者需要实现PDF文档的阅读,并且就某个页面实现"图片"裁剪(一个页面理解为一张图片).笔者对着方面是一点儿也不熟悉,因此就得上网查资料了.之后笔者找到了Android可以通过调用系统相册.拍照实现图片的裁剪.缩放功能. 这一过程就像是在某个应用中上传头像,并对头像进行调整.现做一个记录与分享. 首先我们还是来看看实际的效果图吧! 一开始的界面: 接下来: 看看实际实现区域裁剪的效果吧?需要注意的是这是系统自带的功能来实现的.

  • Android中Glide实现超简单的图片下载功能

    本文介绍了Glide实现超简单的图片下载功能,具体步骤如下: 添加依赖 compile 'com.github.bumptech.glide:glide:3.7.0' 添加权限 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&

  • Android开发之图片旋转功能实现方法【基于Matrix】

    本文实例讲述了Android开发之图片旋转功能实现方法.分享给大家供大家参考,具体如下: 在Android中进行图像旋转需要使用Matrix,它包含了一个3*3的矩阵,专门用于进行图像变换匹配.Matrix ,中文里叫矩阵,高等数学里有介绍,在图像处理方面,主要是用于平面的缩放.平移.旋转等操作.Matrix没有机构体,它必须初始化,然后通过reset方法和set方法来实现. 首先介绍一下矩阵运算.加法和减法就不用说了,太简单了,对应位相加就好.图像处理,主要用到的是乘法 .下面是一个乘法的公式

  • Android 实现WebView点击图片查看大图列表及图片保存功能

    在日常开发过程中,有时候会遇到需要在app中嵌入网页,此时使用WebView实现效果,但在默认情况下是无法点击图片查看大图的,更无法保存图片.本文将就这一系列问题的实现进行说明. 图示: 项目的知识点: 加载网页后如何捕捉网页中的图片点击事件: 获取点击的图片资源后进行图片显示,获取整个页面所有的图片: 支持查看上下一张的图片以及对图片缩放显示: 对图片进行保存: 其他:图片缓存的处理(不用每次都重新加载已查看过的图片) 项目代码结构: 前期准备(添加权限.依赖和混淆设置): 添加权限: <us

  • Android控件实现图片缩放功能

    1 简介 先来一张效果图 TIM图片.gif 上图中灰色的一块是ImageView控件,ImageView中的图片进行左右上下移动,以及双指缩放. 对于android控件的缩放移动,点这里----android控件的缩放,移动 2 使用步骤 布局layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.

随机推荐