`
104zz
  • 浏览: 1507755 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

android 选择图片或拍照时旋转了90度问题

阅读更多

由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下:

 

首先直接看上面博文下的拍完照或者选完图后处理部分:

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {

		switch (resultCode) {
		case 1:
			if (data != null) {
				// 取得返回的Uri,基本上选择照片的时候返回的是以Uri形式,但是在拍照中有得机子呢Uri是空的,所以要特别注意
				Uri mImageCaptureUri = data.getData();
				// 返回的Uri不为空时,那么图片信息数据都会在Uri中获得。如果为空,那么我们就进行下面的方式获取
				if (mImageCaptureUri != null) {
					setImage(mImageCaptureUri);// 根据Uri处理并显示图片
				}
			}
			break;
		default:
			break;

		}
	}

 第二:处理90度问题并显示:

	private void setImage(Uri mImageCaptureUri) {

		// 不管是拍照还是选择图片每张图片都有在数据中存储也存储有对应旋转角度orientation值
		// 所以我们在取出图片是把角度值取出以便能正确的显示图片,没有旋转时的效果观看

		ContentResolver cr = this.getContentResolver();
		Cursor cursor = cr.query(mImageCaptureUri, null, null, null, null);// 根据Uri从数据库中找
		if (cursor != null) {
			cursor.moveToFirst();// 把游标移动到首位,因为这里的Uri是包含ID的所以是唯一的不需要循环找指向第一个就是了
			String filePath = cursor.getString(cursor.getColumnIndex("_data"));// 获取图片路
			String orientation = cursor.getString(cursor
					.getColumnIndex("orientation"));// 获取旋转的角度
			cursor.close();
			if (filePath != null) {
				Bitmap bitmap = BitmapFactory.decodeFile(filePath);//根据Path读取资源图片
				int angle = 0;
				if (orientation != null && !"".equals(orientation)) {
					angle = Integer.parseInt(orientation);
				}
				if (angle != 0) {
					// 下面的方法主要作用是把图片转一个角度,也可以放大缩小等
					Matrix m = new Matrix();
					int width = bitmap.getWidth();
					int height = bitmap.getHeight();
					m.setRotate(angle); // 旋转angle度
					bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
							m, true);// 从新生成图片
					
				}
				photo.setImageBitmap(bitmap);
			}
		}
	}
 OK完成,需要拍照和选择图片功能的部分请看http://104zz.iteye.com/blog/1687662

 

2
1
分享到:
评论
5 楼 sxh86 2015-11-24  
自定义相机,回调的是onPictureTaken(byte[] data, Camera camera),怎么判断位向呢
4 楼 caiq250 2015-05-18  
获取不到URI的时候,通过 Bundle extras = data.getExtras();   bundle获取的图片,怎么知道它的存储路径呢?
3 楼 xiaoxiao102402 2015-04-21  
我现在也遇到获取不到URI的问题。同时我自己设置的地址,但是获取不到图片的旋转角度,图片明明都旋转过啦
2 楼 wyl5338616 2012-11-09  
如果得不到Uri呢,在你case 1的处理中并没有处理返回信息只得到Bitmap而没有得到Uri,这时你怎么处理的图片旋转问题
1 楼 wdhjm12345 2012-11-06  
最近开发发现有些手机拍完照后,图片会被旋转,你的代码很好的解决了问题,谢谢分享

相关推荐

    Android部分手机拍照后获取的图片被旋转问题的解决方法

    调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌的手机都是正常的,就三星出现这个怪事。 在Android适配上,我原来一直以为国内的小米手机够奇葩...

    三星照相默认旋转90度完美解决

    在Android平台上,三星手机用户有时会遇到一个常见问题:拍摄的照片在查看时默认旋转90度,这给用户的日常使用带来了不便。这个问题主要是由于设备的EXIF(Exchangeable Image File Format)信息设置不当导致的。在...

    android图片拍照 删除 添加 旋转

    android 图片 拍照 删除 添加 旋转 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout....

    android相机拍照,存储 调用相册, 图片旋转,裁剪

    在Android开发中,涉及到相机拍照、图片存储、调用相册、图片旋转和裁剪等是常见的功能需求。这些功能的实现涉及到多个Android系统API的使用,包括相机API、文件I/O、媒体库以及图像处理库。下面我们将详细探讨这些...

    android 解决部分手机拍照旋转问题

    android 解决部分手机拍照旋转问题

    android图片的旋转(一分钟学会)

    在Android开发中,图片的旋转是一项常见的操作,无论是用户拍摄的照片需要调整角度,还是应用内显示的图片需要根据设备方向进行适配,都需要用到图片旋转的技术。本篇将深入探讨如何在Android中实现图片的旋转,并...

    Android开发图片旋转的两种方式

    在Android开发中,图片旋转是常见的需求,例如用户拍照后可能需要调整图片方向,或者在应用内展示图片时根据需要进行动态旋转。本教程将详细讲解两种实现Android图片旋转的方法:动画(Animation)和Matrix变换。 ...

    Android图片选择器

    《Android图片选择器详解》 在移动应用开发中,用户对于图片的选取、拍摄和裁剪功能需求日益增强。Android图片选择器就是为满足这一需求而设计的组件,它简化了开发者集成这些功能的过程,提供了丰富的自定义选项,...

    Android 拍照或选择图片设置头像

    以上步骤完整地实现了Android应用从拍照或选择图片到裁剪设置头像的功能,同时解决了三星手机拍照后图片旋转和图片过大导致的裁剪问题。通过这样的实现,用户可以在多种设备上流畅地设置个人头像,提高应用的用户...

    Android调用照相机展示高清图片及展示图片时图片倾斜问题

    // 旋转90度 break; case ExifInterface.ORIENTATION_ROTATE_180: // 旋转180度 break; case ExifInterface.ORIENTATION_ROTATE_270: // 旋转270度 break; // 其他情况... } ``` 根据Exif信息中的旋转值,...

    Android拍照,相册选取图片后剪切

    在Android平台上,开发一款应用,让...以上就是Android拍照、相册选取图片后进行剪切功能的主要知识点。在实际开发中,还需要考虑性能优化、兼容性问题以及用户体验等多方面因素,以打造出高效、稳定且用户友好的应用。

    Android 自定义拍照实例(解决竖拍照片横向问题)

    本教程将深入探讨如何解决Android拍照时出现的竖拍照片横向显示的问题。这个问题通常出现在使用SurfaceView来显示相机预览,并通过Camera类进行拍照操作时。 首先,我们需要了解Android中的Camera类。Camera类是...

    Android选择或拍照相册Demo

    在Android应用开发中,"Android选择或拍照相册Demo"是一个常见的需求,它涉及到用户界面交互、图片处理以及权限管理等多个方面。这个Demo通常提供两种功能:从相册选择图片和通过相机拍摄新照片。接下来,我们将深入...

    安卓拍照上传录像监控录屏相关-三星照相默认旋转90度完美解决.rar

    在安卓平台上,拍照和录像的过程中,经常会遇到图片或视频在某些设备上显示为旋转90度的问题,这通常是由于设备的元数据(metadata)处理不当导致的。在本压缩包中,我们关注的是如何解决三星手机相机拍摄的照片默认...

    Android选择相册拍照裁剪图片完美效果

    在Android应用开发中,用户可能需要从相册中选择图片或者直接通过相机拍照,并进行后续的裁剪操作。为了提供良好的用户体验,确保裁剪过程不会导致图像失真或变形,开发者需要掌握一些关键的技术点。以下是对这个...

    Android 使用libyuv对 yuv数据进行缩放,旋转,镜像,裁剪等操作

    2. **旋转**:libyuv支持90度、180度、270度以及逆时针90度的旋转操作。例如,`I420Rotate`函数可以用于I420格式的YUV数据旋转,它会根据指定的旋转角度改变图像的方向。 3. **镜像**:libyuv也提供了水平或垂直...

    Android调用系统相机拍照、实现压缩、图片旋转、保存以及6.0以上适配问题

    在Android应用开发中,调用系统相机拍照是常见的功能,涉及到多个步骤,包括启动相机、处理返回的图像数据、图片压缩、旋转以及针对Android 6.0(API 23)及以上版本的权限适配。下面我们将详细探讨这些知识点。 1....

    android相册或相机选择图片并编辑

    在Android开发中,用户经常...在实际项目中,还需要考虑图片质量控制、多图选择、图片预览等功能,以及兼容不同Android版本和设备的适配问题。在`ManagePhotoDemo`这样的示例项目中,通常会包含这些功能的完整实现。

    Android图片拍照上传Demo.zip

    这个"Android图片拍照上传Demo.zip"很可能是包含了一个完整的示例项目,帮助开发者理解和实现这一功能。现在,我们将深入探讨相关的知识点。 首先,Android提供了多种方式来获取图片,包括: 1. **相机 Intent**:...

    Android 拍照相册图片多选

    在Android开发中,"Android 拍照相册图片多选"是一个常见的需求,尤其在社交、电商等应用中,用户可能需要从相册中选取多张图片进行上传或者分享。这个功能涉及到多个关键技术点,下面将详细阐述。 首先,我们要...

Global site tag (gtag.js) - Google Analytics