Android图片叠加效果

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

     

    1. 图片叠加的处理

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

    1. 首先获取需要两张图片,并转成Bitmap类型

    Bitmapbg = ((BitmapDrawable) getResources().getDrawable(

            R.drawable.background)).getBitmap();

    Bitmapfg = ((BitmapDrawable) getResources().getDrawable(

            R.drawable.foreground)).getBitmap();

    1. 创建一张大小和背景图一致的位图

    intbgWidth=bg.getWidth();

    intbgHeight=bg.getHeight();

    intfgWidth=fg.getWidth();  //前景图宽度,用于后面计算前景图的绘制坐标

    /*这里不详细解释RGB_565RGB_8888RGB_6666的区别,我是因为后来分享到微信的过程中,发现图片过大,就尽量让图片更小,值得一提的是,我有试过RGB_6666,发现getConfig()图片的参数并没有变化,看了源码才知道,即使是选择RGB_6666,也会被转成RGB_8888,应该是画质太惨目忍睹了,Google便放弃了RGB_6666*/

    Bitmapnewbmp=Bitmap.createBitmap(bgWidth,bgHeight,Bitmap.Config.RGB_565);

    1. 新建画布,并画出背景图和前景图

    Canvascv=newCanvas(newbmp);

    //drawbginto

    //00坐标开始画入bg

    cv.drawBitmap(bg,0,0,null);

    //drawfginto

    //开始画入fg,可以从任意位置画入,具体位置自己计算

    cv.drawBitmap(fg,(bgWidth-fgWidth)/2,bgHeight/4*3-500,null);

    1. 图片压缩处理

    在使用微信sdk分享图片的过程中,发现图片过大会导致微信拉起失败,处理思路是将缩放至原来的一半,图片占用内存自然就减少了,是不是简单粗暴呀:)

    Matrixmatrix=newMatrix();

    matrix.setScale(0.5f,0.5f);

    Bitmap compbmp=Bitmap.createBitmap(newbmp,0,0,newbmp.getWidth(),

    newbmp.getHeight(),matrix,true);

     

    最终效果 ———>


     

     

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android中,可以使用不同的布局来实现图片局。其中,常用的布局有线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和约束布局(ConstraintLayout)。下面给出每种布局的特点和使用方法,供您参考: 1. 线性布局(LinearLayout): 线性布局按照线性的顺序排列控件,可以有水平和垂直两种方向。您可以通过设置android:orientation属性来指定布局的方向,例如android:orientation="horizontal"表示水平布局,android:orientation="vertical"表示垂直布局。线性布局还可以使用android:layout_margin属性来设置控件与其周围边缘的距离。 2. 相对布局(RelativeLayout): 相对布局允许您在控件之间建立相对关系,使得控件可以根据其他控件的位置来进行布局。您可以使用不同的属性来设置控件的位置关系,例如android:layout_alignParentTop表示控件与父布局的顶部对齐,android:layout_below表示控件在另一个控件的下方等等。 3. 帧布局(FrameLayout): 帧布局允许多个控件叠放在同一个位置上,后面的控件会覆盖前面的控件。通常用于实现重叠效果的布局,例如图片轮播、叠加文字等。 4. 约束布局(ConstraintLayout): 约束布局是一个相对新的布局方式,它可以通过设置控件之间的约束关系来实现灵活的布局。您可以使用不同的约束属性,如android:layout_constraintTop_toTopOf、android:layout_constraintStart_toStartOf等来设置控件的位置和相对关系。 通过选择适合的布局方式,并合理设置布局属性,您可以实现不同的图片布局效果。希望以上信息对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android studio 常见布局理解总结](https://blog.csdn.net/JUSTLOVEBOY/article/details/119600243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值