`
zhiweiofli
  • 浏览: 515139 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android的图片叠加

阅读更多

 

android.graphics.Bitmap.Config是一个枚举类型,里面定义了位图的四种格式.

ALPHA_8,ARGB_4444,ARGB_8888都是透明的位图,也就是所字母A代表透明.

从名字中可以看出:

    ALPHA_8: 一种透明度为8位的位图.

    ARGB_4444: A,R,G,B,每一个参数由4bit表示,是一种16位的位图.

    ARGB_8888: A,R,G,B,每一个参数由8bit来表示,是一种32位的位图.

    RGB_565: R,G,B,三个参数分别占5bit,6bit,5bit,是一种三原色通道经过压缩的16位位图.

Bitmap newBitmap = Bitmap. createBitmap( imgMapWidth,imgMapHeight , Bitmap.Config.RGB_565 );
  
android中可以通过以上的方式来创建一BMP格式的位图,只是图片的宽和高的值太大时,会使android的VM产生内存溢出的Exception,解决的方法之一,在生成该对象时,通过设Bitmap.Config,来压缩该位图在生成时的大小。从上面的4个属性值看来,压缩的最大值可以达到2^8。

以下方法能有效解决新建位图的大小过大的问题:
    imageMap是一位图的对象,尺寸有点大,1800*1600,用上面的方法创建位图会抛出异常。
    以下的方法通过判断当前的位图是否可画(可在上面画图),而决定是否复制一新对象,然后在可画图的对象上新建一画布,然后在上面画图,最后就是保存了。
//在指定的位图上添加图标
private Bitmap addMarkToImageMap(int x, int y){
    //创建一个和原图同样大小的位图 
    //Bitmap newBitmap = Bitmap.createBitmap(imgMapWidth,imgMapHeight, Bitmap.Config.RGB_565);
    Bitmap newBitmap = imageMap;
    if(!newBitmap.isMutable()){
         newBitmap = imageMap.copy(Bitmap.Config.RGB_565, true);
    }
    Canvas canvas = new Canvas(newBitmap);
    canvas.drawBitmap( markImg, x, y, paint );//插入图标 
    canvas.save(Canvas. ALL_SAVE_FLAG); 
    //存储新合成的图片
    canvas.restore(); 
    return newBitmap;  
}
 
顺便延伸一下,在图片上写字的例子就出来了:

 /**
      * 图片上画字
      * */
     private Bitmap drawTextAtBitmap(Bitmap bitmap,String text){
          
          int x = bitmap.getWidth();
          int y = bitmap.getHeight();
          
          // 创建一个和原图同样大小的位图
          Bitmap newbit = Bitmap.createBitmap(x, y, Bitmap.Config.ARGB_8888);
          
          Canvas canvas = new Canvas(newbit);
          
          Paint paint = new Paint();
          
          // 在原始位置0,0插入原图
          canvas.drawBitmap(bitmap, 0, 0, paint);
          
          paint.setColor(Color.parseColor("#dedbde"));
          
          paint.setTextSize(20);
          
          // 在原图指定位置写上字
          canvas.drawText(text, 53 , 30, paint);
          
          canvas.save(Canvas.ALL_SAVE_FLAG);
          
          // 存储
          canvas.restore();
          
          return newbit;
     }
 
分享到:
评论

相关推荐

    Android 图片叠加banner效果 仿mac QQ音乐图片轮播

    在Android开发中,实现“Android 图片叠加banner效果 仿mac QQ音乐图片轮播”是一项常见的需求,尤其在设计用户界面时,为了增加视觉吸引力,许多应用会采用类似Mac QQ音乐顶部的图片轮播功能。这个功能的核心在于...

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

    在Android开发中,图片叠加效果是一种常见的视觉设计需求,它能增强用户界面的美观性和交互体验。本篇文章将深入探讨两种实现图片叠加效果的方法,并提供详细的代码示例。 首先,第一种方法是通过Canvas进行绘制。...

    android图片叠加

    在Android开发中,图片叠加是一种常见的需求,例如在制作贴纸应用、相册编辑功能或者设计界面时。本文将详细探讨如何在Android中实现图片叠加,主要涉及Canvas和LayerDrawable两种方法。 首先,我们来了解Canvas。...

    Android实现图片叠加功能

    Android 实现图片叠加功能 Android 图片叠加功能是指在 Android 平台上将两张图片叠加在一起,并将合成后的图片分享到微信或其他社交媒体平台。下面是实现图片叠加功能的代码和思路: 一、图片叠加的处理 图片...

    Android 拖动图片及图层叠加

    在Android开发中,实现拖动图片以及图层叠加的功能是一项常见的需求,这通常涉及到用户界面(UI)的交互设计和图像处理技术。本教程将详细讲解如何在Android应用中实现这些功能。 首先,我们需要理解“拖动图片移动...

    Android进阶篇之RoundProgress(圆形进度条)使用两张图片叠加实现

    总的来说,通过以上步骤,我们就可以在Android应用中实现一个使用两张图片叠加的RoundProgress圆形进度条组件。这样的组件不仅可以提供直观的进度信息,还能通过自定义图片达到美观的效果,提升用户的使用体验。在...

    android蓝牙打印图片叠加水印

    综上所述,实现“android蓝牙打印图片叠加水印”涉及了Android蓝牙通信、ESC/POS指令集的理解和应用、图像处理以及错误处理等多个方面的技术知识。开发者需要深入理解这些概念并实践,才能开发出稳定可靠的打印功能...

    android仿美图秀秀 图片叠加拖动旋转

    下面将详细讲解如何在Android应用中实现图片叠加、拖动和旋转的功能。 1. **图片叠加**: 在Android中,我们可以利用`ImageView`或者自定义View来实现图片叠加。叠加意味着在一个视图上添加另一个视图,通常使用`...

    android图片堆叠效果实现

    在Android开发中,实现图片堆叠效果是一种常见的视觉设计需求,尤其在相册或图库应用中,这种效果可以提供一种独特的展示方式,使用户能够更直观地浏览多张图片。"图片堆叠"效果通常涉及到图像的重叠、旋转以及层次...

    android 图片旋转 叠加 去黑边

    利用Canvas 的save,translate,rotate 相关方法,可以比较快速的实现图片旋转,且中心点不偏移。避免了使用Bitmap中setRotate中旋转覆盖且出现黑边的问题。可以直接下载使用自定义控件就可以了。

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

    总结起来,实现Android图片背景渐变切换与图层叠加效果,关键在于理解和使用GradientDrawable进行颜色渐变,以及有效地组织布局以实现图层叠加。同时,理解Android中的事件监听和响应机制,如点击事件处理,也是必不...

    Android使用opencv拼接图片

    总结来说,Android使用OpenCV拼接图片涉及到的关键知识点包括:OpenCV库的集成、图像加载与预处理、特征匹配、重叠区域识别、图像融合和多图拼接。掌握这些技术能帮助开发者实现复杂的图像处理功能,如全景图制作、...

    Android 图片照片墙的加载和滑动特效(实现图片叠加和滑出效果) 源码

    android-image-slide-panel图片照片墙的加载图片的时候一张一张叠加 和加载完成后切换每一张的滑动特效,自定义ImageSlidePanel,按照初叶的使用习惯, 每一页应该是一个模板,所以此处命名时使用了Template关键字

    Android图片毛玻璃效果

    总结起来,通过JNI实现Android图片的毛玻璃效果,能够充分利用C/C++的性能优势,提高图像处理的速度,为用户提供流畅的体验。"BulrBitmap"库可能就提供了这样的功能,只需正确集成并调用其提供的接口,即可在Android...

    android画廊效果,中间图片变大

    在Android开发中,创建一个具有“画廊效果”的应用是一项常见的需求,这通常涉及到图片的展示和用户交互。画廊效果允许用户通过横向滑动来浏览多张图片,而“中间图片变大”则是一种增强用户体验的设计,它使得当前...

    Android图片显示位置

    总之,Android图片显示位置的处理涉及到`ImageView`的使用、布局设计、触摸事件处理、动画实现等多个方面。开发者需要熟练掌握这些技术,以实现丰富多样的图片展示和文字叠加效果。在实际项目中,根据具体需求选择...

    Android图片倒影+圆角图片

    在Java中,我们可以创建一个Bitmap对象,复制原始图片并将其翻转,然后将翻转后的图片与原图叠加。需要注意的是,处理过程中要考虑到性能优化,避免在主线程进行大量计算,以防止UI卡顿。另外,Android的Nine-Patch...

    android图片显示处理

    `android图片显示处理`这个主题主要包括了如何在Android应用中加载、显示以及优化图片。Actionbar和Frame是两个关键概念,Actionbar是Android应用程序中常用的顶部导航组件,而Frame通常指的是帧布局(FrameLayout)...

    android图片层叠效果

    在Android开发中,实现“图片层叠...总的来说,实现“Android图片层叠效果”涉及到Android的图形绘制、动画处理、性能优化等多个方面,开发者需要根据具体需求选择合适的方法和技术,以达到最佳的视觉效果和用户体验。

Global site tag (gtag.js) - Google Analytics