android ImageView缩放 旋转

Posted on 2014-08-14 11:14  逍_遥  阅读(464)  评论(0)    收藏  举报
缩放图片和旋转图片要具备的技术
 
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 = new android.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对象,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 = new android.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);
 
 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3