一、概述
安卓中的图片处理和java基础中的GUI,思路都是一致的。
android里面显示图像的时候,使用的是32位的手法去表示的。
- argb – 透明 : 8位 , 红色8位 , 绿色:8为 , 蓝色:8位
- 24位的位图代表的是每个像素点有3个字节的长度,
- 32位的位图,就应该是4个字节的长度
二、图片的操作步骤
//得到控件
pre = (ImageView) findViewById(R.id.pre);
//1.得到原图
Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pre);
//2.得到拷贝图
Bitmap copyBitmap = srcBitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());
//3.定义画板
Canvas canvas = new Canvas(copyBitmap);
//4.定义画笔
Paint paint = new Paint();
//5.定义矩阵
Matrix matrix = new Matrix();
//6.开始作画
canvas.drawBitmap(copyBitmap, matrix, paint);
//7.把画写出去
pre.setImageBitmap(copyBitmap);
三、加载大图片的处理
加载大图片,如果直接硬编码采样率,程序因为图片太大,太占内存,会挂掉。解决的方法是计算屏幕与图片的宽高比例,然后取其中间值或者是最大值。
- 得到手机的分辨率
//1. 得到窗口管理者
WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
//2.得到显示相关的对象 ,里面可以包含分辨率,屏幕的密度信息
Display display = manager.getDefaultDisplay();
display.getSize(outSize);
int height = display.getHeight();
int width = display.getWidth();
- 得到图片的大小
Options opts = new Options();
//设置采样率 , 宽度和高度分别返回的像素个数是原来的 1/4 总的像素个数就是原来的 1/16
opts.inSampleSize = 4 ;
Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/big.jpg", opts);