三星手机拍照后显示图片角度旋转问题的解决方法

          项目开发中,须要用一个ImageView显示拍照的图片。

在使用三星手机进行測试的时候发现图片角度发生了旋转,经资料查询,这是由于三星手机拍照的图片旋转角度是90度,而其它手机是0度。这样思路就出来了:先查询被旋转了多少度,然后再旋转回来。ok。以下上代码。


首先是读取图片被旋转的角度。

	/**
	 * 读取照片exif信息中的旋转角度
	 * @param path  照片路径
	 * @return 角度
	 */
	public int readPictureDegree(String path) {
		int degree = 0;
		try {
			ExifInterface exifInterface = new ExifInterface(path);
			int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,
					ExifInterface.ORIENTATION_NORMAL);
			switch (orientation) {
			case ExifInterface.ORIENTATION_ROTATE_90:
				degree = 90;
				break;
			case ExifInterface.ORIENTATION_ROTATE_180:
				degree = 180;
				break;
			case ExifInterface.ORIENTATION_ROTATE_270:
				degree = 270;
				break;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return degree;
	}

再接着是将图片旋转回0度。

	public Bitmap toturn(Bitmap img, String path) {
		Matrix matrix = new Matrix();
		matrix.postRotate(readPictureDegree(path)); 
		int width = img.getWidth();
		int height = img.getHeight();
		img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);
		return img;
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值