BitMap类
来源:互联网 发布:织梦cms后台演示地址 编辑:程序博客网 时间:2024/05/21 00:49
BitMap代表一张位图,扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/8=3072KB
位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。
在android系统当中,bitmap是图像处理最重要的类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
下面主要介绍BitMap的用法:
1.从资源文件中获取
1 Bitmap rawBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.img1);
2.从SD卡中得到图片
1 (方法1) 2 String SDCarePath=Environment.getExternalStorageDirectory().toString(); 3 String filePath=SDCarePath+"/"+"haha.jpg"; 4 Bitmap rawBitmap1 = BitmapFactory.decodeFile(filePath, null); 5 (方法2)6 InputStream inputStream=getBitmapInputStreamFromSDCard("haha.jpg"); 7 Bitmap rawBitmap2 = BitmapFactory.decodeStream(inputStream);
3.设置图片的圆角,返回设置后的BitMap
1 public Bitmap toRoundCorner(Bitmap bitmap, int pixels) { 2 Bitmap roundCornerBitmap = Bitmap.createBitmap(bitmap.getWidth(), 3 bitmap.getHeight(), Config.ARGB_8888); 4 Canvas canvas = new Canvas(roundCornerBitmap); 5 int color = 0xff424242;// int color = 0xff424242; 6 Paint paint = new Paint(); 7 paint.setColor(color); 8 // 防止锯齿 9 paint.setAntiAlias(true);10 Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());11 RectF rectF = new RectF(rect);12 float roundPx = pixels;13 // 相当于清屏14 canvas.drawARGB(0, 0, 0, 0);15 // 先画了一个带圆角的矩形16 canvas.drawRoundRect(rectF, roundPx, roundPx, paint);17 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));18 // 再把原来的bitmap画到现在的bitmap!!!注意这个理解19 canvas.drawBitmap(bitmap, rect, rect, paint);20 return roundCornerBitmap;21 }
4.将图片高宽和的大小kB压缩
1 //得到图片原始的高宽 2 int rawHeight = rawBitmap.getHeight(); 3 int rawWidth = rawBitmap.getWidth(); 4 // 设定图片新的高宽 5 int newHeight = 500; 6 int newWidth = 500; 7 // 计算缩放因子 8 float heightScale = ((float) newHeight) / rawHeight; 9 float widthScale = ((float) newWidth) / rawWidth;10 // 新建立矩阵11 Matrix matrix = new Matrix();12 matrix.postScale(heightScale, widthScale);13 // 设置图片的旋转角度14 // matrix.postRotate(-30);15 // 设置图片的倾斜16 // matrix.postSkew(0.1f, 0.1f);17 // 将图片大小压缩18 // 压缩后图片的宽和高以及kB大小均会变化19 Bitmap newBitmap = Bitmap.createBitmap(rawBitmap, 0, 0, rawWidth,20 rawWidth, matrix, true);
5.将Bitmap转换为Drawable Drawable转Bitmap
1 Drawable newBitmapDrawable = new BitmapDrawable(Bitmap);2 //如果要获取BitMapDrawable中所包装的BitMap对象,可以用getBitMap()方法;3 Bitmap bitmap = newBitmapDrawable.getBitmap();
6.由于前面创建的Bitmap所占用的内存还没有回收,而导致引发OutOfMemory错误,所以用下面方法判断是否回收。
1 if(!bitmap.isRecycled())2 {3 bitmap.recycle()
4 }
0 0
- BitMap类
- BitMap类
- BitMap类
- Bitmap类
- 一个Bitmap类
- Android Bitmap 工具类
- Bitmap 和 BitmapData 类
- Bitmap 工具类
- Android Bitmap 工具类
- Android Bitmap 类
- Bitmap.CompressFormat类介绍
- Bitmap工具类
- bitmap类C++实现
- BitMap工具类
- C# 图像类Bitmap
- Bitmap工具类BitmapHelper
- Bitmap工具类
- 类Bitmap和Drawable
- lintcode:Sort Colors II
- android studio中R类重复
- zookeeper服务注册
- hdu5656 CA Loves GCD
- Providing Resources
- BitMap类
- struts2内置校验器、ajax、json
- (三)mybatis学习之全局配置文件(sqlMapConfig.xml)
- 机房重构报表显示方式
- Facial keypoints detection Kaggle 竞赛系列
- 第5讲 类和对象的高级应用-对象数组
- BitMap的用法
- 51nod 算法马拉松12 逛街(treap)
- 【c++程序】inline一般用法