使用Bitmap.createBitmap 创建和BitmapFactory.decode....获取Bitmap对象

位图基本概念

位图文件的定义扩展名可以是.bmp或者.dib,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。
根据定义,知道了一个位图的分辨率和色彩,就可以计算出该位图的所占空间大小。如一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)=3072KB
位图文件的特点:图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。

Bitmap 对象的创建方法

Bitmap类首先提供了一个静态方法createBitmap来创建Bitmap对象.该方法有几个重载的方法,如下图所示:



Bitmap.createBitmap(Bitmap src);方法功能:复制一个和源位图一样的新位图。方法参数为一个Bitmap对象。查看源码注释,用此方法创建的位图是不可改变的。不可改变是什么意思?下面我将详细描述一下。bitmap对象有一个布尔类型的属性叫做Mutable,意思是可改变的。其值有true和false两个。描述的是外界能否修改该图片的像像素点。通过方法 bitmap.isMutable();可以判断一个bitmap对象是否是可以改变的。当一个bitmap对象是不可改变的时候,那么bitmap.setPixel();方法将不可掉用,掉用后会导致异常,该方法就是设置bitmap的像素的。有些地方就需要传入一个必须是可以改变的bitmap对象的,比如Canvas c=new Canvas(bitmap);这里的bitmap就必须是可以改变的,否则报异常,源码注释为bitmap Specifies a mutable bitmap for the canvas to draw into用此方法创建的bitmap对象还有一个特点,即创建的新图片和源图片的像素密度是相同的。最后创建的新图片和源图片大小是一样的,甚至(有时候)两个图片的地址即指向的对象是一样的,两个变量指向同一个对象。为什么用有时候,看源码注释The new bitmap may be the same object as source, or a copy may have been made源码说有时候是该源图片本身,有得时候是源图片的副本。如果源图片为不可改变的,那么新的图片即和源图片为一个对象,如果源图片是可以改变的,那么新图片为源图片的副本,即是两个不同的对象。试想,如果源图片是可以改变的,新的图片也和源图片指向同一个对象,那么新的图片被编辑了源图片也会随之改变。而这样是不对的!
Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height);方法功能:在源位图上裁剪出一个新位图。方法参数为一个源Bitmap对
象,源图片中x方向的起始像素,源图片中y方向的起始像素,截图宽度(单位为像素),截图高度(单位为像素);查看源码注释,用此方法创建的位图是不可以
被改变的。新图片和源图片像素度相同,新图片可能是源图片的副本,也可能是源图片的全部或者部分副本。具体解释见上边。
  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值