android ImageView缩放 旋转

缩放图片和旋转图片要具备的技术

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);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值