转换Bitmap对象

把一个View转换bitmap对象

1 public static Bitmap getViewBitmap(View view) {
2         view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
3                 View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
4         view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
5         view.buildDrawingCache();
6         Bitmap bitmap = view.getDrawingCache();
7         return bitmap;
8     }

根据已有的Drawable创建一个新的Bitmap:

 1 private Bitmap bitmap;
 2 private void drawableToBitamp(Drawable drawable)
 3     {
 4         int w = drawable.getIntrinsicWidth();
 5         int h = drawable.getIntrinsicHeight();
 6         System.out.println("Drawable转Bitmap");
 7         Bitmap.Config config =
 8                 drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
 9                         : Bitmap.Config.RGB_565;
10         bitmap = Bitmap.createBitmap(w,h,config);
11         //注意,下面三行代码要用到,否在在View或者surfaceview里的canvas.drawBitmap会看不到图
12         Canvas canvas = new Canvas(bitmap);
13         drawable.setBounds(0, 0, w, h);
14         drawable.draw(canvas);
15     }

直接从现有的Drawable中取出Bitmap:

1 private Bitmap bitmap;
2
3 private void drawableToBitamp(Drawable drawable)
4     {
5         BitmapDrawable bd = (BitmapDrawable) drawable;
6         bitmap = bd.getBitmap();
7     }

Bitmap转Byte

1 private byte[] Bitmap2Bytes(Bitmap bm){
2
3     ByteArrayOutputStream baos = new ByteArrayOutputStream();
4
5     bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
6
7     return baos.toByteArray();
8  }

byte[] 转Bitmap:

 1 private Bitmap Bytes2Bimap(byte[] b){
 2
 3                     if(b.length!=0){
 4
 5                             return BitmapFactory.decodeByteArray(b, 0, b.length);
 6
 7                     }
 8
 9                     else {
10
11                             return null;
12
13                     }
14
15           }
时间: 2024-08-09 06:35:23

转换Bitmap对象的相关文章

C# byte数组转成Bitmap对象

方法一: /// <summary> /// 将数组转换成彩色图片 /// </summary> /// <param name="rawValues">图像的byte数组</param> /// <param name="width">图像的宽</param> /// <param name="height">图像的高</param> /// <

Android开发中解析、创建Bitmap对象时OOM的有效解决方法并附上一些干货

先来点鸡汤: Stay hungry,stay foolish 这句话的的解读:我们必须了解自己的渺小.如果我们不学习,科技发展的速度会让我们五年后被清空.所以,我们必须用初学者谦虚的自觉,饥饿者渴望的求知态度,来拥抱未来的知识. 这几天做的项目中需要从图库选择图片或者拍照生成图片,然后展现在IamgeView控件上.当然,从图库选择图片和拍照选择图片的功能实现起来很简单.直接写上代码: CharSequence[] items = { "拍照", "图库" };

Android学习之Bitmap对象与字节数组相互转换

1.将Bitmap对象读到字节数组中 ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] datas = baos.toByteArray(); 2.将字节数组转为Bitmap对象 byte[] b = getIntent().getByteArrayExtra("bitmap"); Bitmap

Android 通过Uri获取Bitmap对象

1 package classExample.roseBulletEX3; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.provider.MediaStore; public class ImageUtil { /** * 通过uri获取Bitmap对象 * * @param context * @param uri * @return

Android 那些你所不知道的Bitmap对象具体解释

我们知道Android系统分配给每一个应用程序的内存是有限的,Bitmap作为消耗内存大户.我们对Bitmap的管理稍有不当就可能引发OutOfMemoryError,而Bitmap对象在不同的Android版本号中存在一些差异,今天就给大家介绍下这些差异.并提供一些在使用Bitmap的须要注意的地方. 在Android2.3.3(API 10)及之前的版本号中,Bitmap对象与其像素数据是分开存储的,Bitmap对象存储在Dalvik heap中,而Bitmap对象的像素数据则存储在Nati

Activity跳转时传递Bitmap对象的实现

前言 相信大家可能都了解Activity跳转时我们是能够传递參数的,比方使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity.可是不知道大家有没有想过,我们能不能传递一个Bitmap对象呢?可能有人会问为什么要传递一个Bitmap对象?好吧,由于我在开发中遇到了这种问题才去说说这个. 我前段时间想从网络获取图片显示在ImageView上,当显示好了之后,我希望点击ImageView能够跳转到新的Activity然后显示我点击的图片,所

在一般处理程序中,把Form Post过来的表单集合转换成对象 ,仿 MVC post,反射原理

using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; using System.Reflection; using System.Web; using WebSite.Models; namespace testWebuploader.Scripts.Plugin.webuploader_v0._1._2 { /// <summary> /

Android如何缓存你的BITMAP对象

在app中通常最占内存.占流量的元素就是图片了,图片往往又无处不在,特别是伴随着list,GridView或者ViewPager出现,这些图片随着你的滑动操作,时而出现在你的屏幕中,时而消失在屏幕之外. 对应滑出屏幕之外的图片,你可以缓存在内存中以便下次加载快速渲染,但这回增加内存的开销,你也可以立即释放掉这部分内存,但下次加载会变的很慢,因为来讲回收影响UI渲染,获取图片资源更加事一个耗时的过程.所以怎么样才能做到节省内存的开销又能提高加载速度?这是一个策略平衡问题,取决于你如何去使用 mem

关于JAVA变量,数据类型,基本数据类型之间的转换和对象型的基本数据类型

如何给java变量取名字-----标示符     标示符是用来给类,对象,方法,变量,接口和自定义数据类型命名的.凡是可以自己取名字的地方都叫做标示符,都要遵循标示符的规则. 标示符的规则:1.由数字,字母和下划线(_),美元符号($)组成. 2.区分大小写,首字母不能数字,长度无限制. 3.不能与java关键字重名. java常用数据类型(基本类型和引用类型) 基本数据类型: 基本数据类型分为数值类型和非数值类型.其中数值类型包括整数类型和非整形.非数值类型包括,字符类型,布尔类型, 整型包括