图册 -大图显示原理

public void imageBitmap(View v){
    	String pathName = "/sdcard/a.jpg";
    	//1.图片解析配置
    	BitmapFactory.Options opts = new Options();
    	//2.不真去解析图片,仅获取图片头部信息[宽高,大小,日期等]
    	ExifInterface exif = new ExifInterface(pathName);//获取图片属性信息
    	String time = exif.getAttribute(ExifInterface.TAG_DATETIME); //拍摄时间
    	String camera = exif.getAttribute(ExifInterface.TAG_MODEL); //拍摄相机
    	//exif.setAttribute(tag, value); 设置图片属性信息
    	
    	opts.inJustDecodeBounds = true;
    	BitmapFactory.decodeFile(pathName,opts);
    	int imageHeight = opts.outHeight;
    	int imageWidth = opts.outWidth;
    	System.out.println("高"+imageHeight+" | 宽"+imageWidth);
    	
    	
    	//获取手机屏幕宽高
    	WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    	//3.0以上才支持
    	Point outSize = new Point();
		wm.getDefaultDisplay().getSize(outSize );
    	int x = outSize.x;
    	int y = outSize.y;
    	
    	//计算缩放比例  图片尺寸/屏幕尺寸
    	int scaleX = imageWidth / x; 
    	int scaleY = imageHeight / y;
    	int scale = 1 ; //缩放比
    	
    	if (scaleX > scaleY & scaleY >= 1) {
			scale = scaleX;
		}
    	if (scaleX < scaleY & scaleX >= 1) {
			scale = scaleY;
		}
    	
    	//3.一切完毕解析图片
    	opts.inJustDecodeBounds = false;
    	opts.inSampleSize = scale;//采样率
    	Bitmap bitmap = BitmapFactory.decodeFile(pathName, opts); //缩小后的Bitmap
    	ImageView.setImageBitmap(bitmap); //显示图片
    	
    	
    }


public void imageButlistener(View v){
    	//intent 集合系统图库应用,选择照片
    	Intent intent = new Intent();
    	intent.setAction(Intent.ACTION_PICK);
    	intent.setType("image/*");
    	startActivityForResult(intent, 0);
    }
//开启一个gallery_activity 获取其返回值-重写onActivityResult()
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		//图片uri路径 -gallery 图库程序源代码
		Uri uri = data.getData();
	//	大图缩略图-
	//	Bitmap bitmap = data.getParcelableExtra("data");
	//	imageView.setImageBitmap(bitmap);
		imageView.setImageURI(uri); //--直接设置图片-图片太大会报错
		super.onActivityResult(requestCode, resultCode, data);
	}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值