安卓图片缩放
程序员文章站
2024-01-19 09:22:22
...
缩放图片并加载到内存中
_计算机图形处理的原理
计算机在表示图形的时候使用像素点来表示,每个像素点都是使用一个颜色来表示,
每个颜色都是6个十六进制的数值来表示的,计算机在底层表示图形时就是使用01001字符串来表示的,处理图形时就是修改0101的序列。
缩放加载图片:
1、得到设备屏幕的分辨率:
2、得到原图的分辨率:
3、通过比较得到一个合适的比例值:
4、使用比例值缩放一张图片,并加载到内存中:
代码:
// 1、得到设备屏幕的分辨率:
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
long screenHeigth = display.getHeight();
long screenWidth = display.getWidth();
// 2、得到原图的分辨率:
Options opts = new Options();
//如果置为true,表示只绑定图片的大小
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.jpg", opts);
long scrHeight = opts.outHeight;
long scrWidth = opts.outWidth;
// 3、通过比较得到一个合适的比例值:
int scale = 1;
//3000/320 = 9 3000/480=6
int sx = (int) (scrWidth/screenWidth);
int sy = (int) (scrHeight/screenHeigth);
if(sx>=sy&& sx>=1){
scale = sx;
}
if(sy>sx&& sy>=1){
scale = sy;
}
// 4、使用比例值缩放一张图片,并加载到内存中:
opts.inJustDecodeBounds = false;
//按照比例缩放原图
opts.inSampleSize = scale;
Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.jpg", opts);