android ImageView缩放 旋转

时间:2021-11-05 04:53:33
缩放图片和旋转图片要具备的技术   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);