android ImageView缩放 旋转

来源:互联网 发布:linux ntp服务器地址 编辑:程序博客网 时间:2024/05/14 15:16
缩放图片和旋转图片要具备的技术

1、得到位图Bitmap的方式我总结了四种方式: 
(1)从sdcard中图片路径去取,本例就是采取这种方式 ,如下面的代码,
filename代表图片的路径
Bitmap bm = BitmapFactory.decodeFile(fileName);
(2)从项目的/res/drawable中去取
Bitmap bm =((BitmapDrawable)getResources().getDrawable(R.drawable.icon)).getBitmap();
java.io.InputStream is =getResources().openRawResource(R.drawable.icon);
BitmapFactory.Option opts = new BitmapFactory.Options();
opts.inSampleSize = 2;
Bitmap bitmap =BitmapFactory.decodeStream(is,null,opts);
(3)从布局文件中的ImageView中去取(以下代码中imageView是一个ImageView对象,该对象中已经设置了图片)
BitmapDrawable bitmapDrawable = (BitmapDrawable)imageView.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
(4)从socket中去取
socket读取出的图片内容保存到byte数组中(假设byte数组名是 b,并且b的长度与图片内容长度相等)
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0,b.length); 
2、如?果想改变图片的大小,可以先得到图片的位图对象后,改变位图大小,再设置到ImageView中去,
本编讲的是怎样改变位图的大小示例,该示例把位图放大了1/4
(假设bm是位图Bitmap对象, iv是ImageView对象,int curDegrees = 0)
int bmpW = bm.getWidth();
int bmpH = bm.getHeight();
//设置图片放大比例
 double scale = 1.25;
 //计算出缩放比例的比例
 int scaleW = 1;
 int scaleH = 1;
 scaleW = (float)(scaleW*scale);
 scaleH = (float)(scaleH*scale);
 //产生reSize后的Bitmap对象
 android.graphics.Matrix mt = newandroid.graphics.Matrix();
 mt.postScale(scaleW, scaleH);
 Bitmap resizeBmp = Bitmap.createBitmap(bm,0, 0, bmpW, bmpH, mt, true);
3、显示在ImageView中
iv.setImageBitmap(resizeBmp);//iv是ImageView对象
二、旋转图片(以下示例是把图片放大四分之一再旋转,假设bm是位图Bitmap对象, iv是ImageView对象,intcurDegrees = 0)
int bmpW = bm.getWidth();
       int bmpH = bm.getHeight();
       //设置图片放大比例
       double scale = 1.25;
       //计算出这次要放大的比例
       int scaleW = 1;
  int scaleH = 1;
       scaleW = (float)(scaleW*scale);
       scaleH = (float)(scaleH*scale);
       //产生reSize后的Bitmap对象
       android.graphics.Matrix mt = newandroid.graphics.Matrix();
       //设置位图缩放比例
       mt.postScale(scaleW, scaleH);
       //设置位图旋转程度
       mt.setRotate(curDegrees = curDegrees + 5);
       //设置例设置好的位图缩放比例与旋转程度改变位图
       Bitmap resizeBmp = Bitmap.createBitmap(bm, 0, 0,bmpW, bmpH, mt, true);
       //把位图显示到ImageView中去
       iv.setImageBitmap(resizeBmp);


0 0
原创粉丝点击