根据屏幕分辨率缩放显示图片
也是直接上代码吧
1 package cn.itcast.resizeimage; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.io.InputStream; 6 7 import android.app.Activity; 8 import android.content.Intent; 9 import android.graphics.Bitmap; 10 import android.graphics.BitmapFactory; 11 import android.graphics.BitmapFactory.Options; 12 import android.net.Uri; 13 import android.os.Bundle; 14 import android.view.Display; 15 import android.view.View; 16 import android.view.WindowManager; 17 import android.widget.ImageView; 18 19 public class LoadImageActivity extends Activity { 20 private ImageView iv; 21 private WindowManager wm; 22 private Display display; 23 @Override 24 public void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.main); 27 iv = (ImageView) findViewById(R.id.iv); 28 wm = getWindowManager(); 29 //获取手机的屏幕宽高 30 display = wm.getDefaultDisplay(); 31 } 32 33 public void selectImage(View view) { 34 Intent intent = new Intent(); 35 intent.setAction("android.intent.action.PICK"); 36 intent.addCategory("android.intent.category.DEFAULT"); 37 intent.setType("image/*"); 38 startActivityForResult(intent, 0); 39 40 } 41 42 @Override 43 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 44 try { 45 if (data != null) { 46 // 得到点击图片的uri 47 Uri uri = data.getData(); 48 //对 要加载的图片进行缩放 49 //1.得到图片的宽度和高度. 50 //由于我们只想得到图片的宽度和高度,这个时候 只需要解析图片的头信息 51 BitmapFactory.Options opts = new Options(); 52 opts.inJustDecodeBounds = true;//让 bimapfactory假的解析这个位图,只获取位图的边框信息 53 InputStream is = getContentResolver().openInputStream(uri); 54 BitmapFactory.decodeStream(is); 55 56 int bitmapHeight = opts.outHeight; 57 int bitmapWidth = opts.outWidth; 58 59 int windowHeight = display.getHeight(); 60 int windowWidth = display.getWidth(); 61 //获取水平和垂直方向的缩放比 62 int scaley = bitmapHeight / windowHeight; 63 int scalex = bitmapWidth / windowWidth; 64 if(scalex>scaley&&scaley>1){ 65 opts.inSampleSize = scalex; 66 } 67 if(scaley>scalex&&scalex>1){ 68 opts.inSampleSize = scaley; 69 } 70 opts.inJustDecodeBounds = false;// 由于已经得到了缩放比例 ,让位图工厂真正的解析这个位图 71 // 由于前面 我们已经解析了这个输入流, 需要重新初始化这个输入流 72 is = getContentResolver().openInputStream(uri); 73 Bitmap bitmap = BitmapFactory.decodeStream(is); 74 75 76 77 iv.setImageBitmap(bitmap); 78 } 79 } catch (Exception e) { 80 e.printStackTrace(); 81 } 82 super.onActivityResult(requestCode, resultCode, data); 83 } 84 }