由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下:
首先直接看上面博文下的拍完照或者选完图后处理部分:
<div id="" class="dp-highlighter" style="color: #000000;">
<div class="bar">
<div class="tools" style="font-weight: bold;">
Java代码 <a style="color: #108ac6;" title="收藏这段代码"></a>
</div>
</div>
- <span style="color: black;"><span class="annotation" style="color: #646464;">@Override</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">protected</span> <span class="keyword" style="font-weight: bold; color: #7f0055;">void</span> onActivityResult(<span class="keyword" style="font-weight: bold; color: #7f0055;">int</span> requestCode, <span class="keyword" style="font-weight: bold; color: #7f0055;">int</span> resultCode, Intent data) { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">switch</span> (resultCode) { </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">case</span> <span class="number" style="color: #c00000;">1</span>: </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (data != <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>) { </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// 取得返回的Uri,基本上选择照片的时候返回的是以Uri形式,但是在拍照中有得机子呢Uri是空的,所以要特别注意</span> </span>
- <span style="color: black;"> Uri mImageCaptureUri = data.getData(); </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// 返回的Uri不为空时,那么图片信息数据都会在Uri中获得。如果为空,那么我们就进行下面的方式获取</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (mImageCaptureUri != <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>) { </span>
- <span style="color: black;"> setImage(mImageCaptureUri);<span class="comment" style="color: #008200;">// 根据Uri处理并显示图片</span> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">break</span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">default</span>: </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">break</span>; </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
</div>
第二:处理90度问题并显示:
<div id="" class="dp-highlighter" style="color: #000000;">
<div class="bar">
<div class="tools" style="font-weight: bold;">
Java代码 <a style="color: #108ac6;" title="收藏这段代码"></a>
</div>
</div>
- <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #7f0055;">private</span> <span class="keyword" style="font-weight: bold; color: #7f0055;">void</span> setImage(Uri mImageCaptureUri) { </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// 不管是拍照还是选择图片每张图片都有在数据中存储也存储有对应旋转角度orientation值</span> </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// 所以我们在取出图片是把角度值取出以便能正确的显示图片,没有旋转时的效果观看</span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> ContentResolver cr = <span class="keyword" style="font-weight: bold; color: #7f0055;">this</span>.getContentResolver(); </span>
- <span style="color: black;"> Cursor cursor = cr.query(mImageCaptureUri, <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>, <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>, <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>, <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>);<span class="comment" style="color: #008200;">// 根据Uri从数据库中找</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (cursor != <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>) { </span>
- <span style="color: black;"> cursor.moveToFirst();<span class="comment" style="color: #008200;">// 把游标移动到首位,因为这里的Uri是包含ID的所以是唯一的不需要循环找指向第一个就是了</span> </span>
- <span style="color: black;"> String filePath = cursor.getString(cursor.getColumnIndex(<span class="string" style="color: blue;">“_data”</span>));<span class="comment" style="color: #008200;">// 获取图片路</span> </span>
- <span style="color: black;"> String orientation = cursor.getString(cursor </span>
- <span style="color: black;"> .getColumnIndex(<span class="string" style="color: blue;">“orientation”</span>));<span class="comment" style="color: #008200;">// 获取旋转的角度</span> </span>
- <span style="color: black;"> cursor.close(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (filePath != <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span>) { </span>
- <span style="color: black;"> Bitmap bitmap = BitmapFactory.decodeFile(filePath);<span class="comment" style="color: #008200;">//根据Path读取资源图片</span> </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">int</span> angle = <span class="number" style="color: #c00000;"></span>; </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (orientation != <span class="keyword" style="font-weight: bold; color: #7f0055;">null</span> && !<span class="string" style="color: blue;">“”</span>.equals(orientation)) { </span>
- <span style="color: black;"> angle = Integer.parseInt(orientation); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">if</span> (angle != <span class="number" style="color: #c00000;"></span>) { </span>
- <span style="color: black;"> <span class="comment" style="color: #008200;">// 下面的方法主要作用是把图片转一个角度,也可以放大缩小等</span> </span>
- <span style="color: black;"> Matrix m = <span class="keyword" style="font-weight: bold; color: #7f0055;">new</span> Matrix(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">int</span> width = bitmap.getWidth(); </span>
- <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #7f0055;">int</span> height = bitmap.getHeight(); </span>
- <span style="color: black;"> m.setRotate(angle); <span class="comment" style="color: #008200;">// 旋转angle度</span> </span>
- <span style="color: black;"> bitmap = Bitmap.createBitmap(bitmap, <span class="number" style="color: #c00000;"></span>, <span class="number" style="color: #c00000;"></span>, width, height, </span>
- <span style="color: black;"> m, <span class="keyword" style="font-weight: bold; color: #7f0055;">true</span>);<span class="comment" style="color: #008200;">// 从新生成图片</span> </span>
- <span style="color: black;"> </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> photo.setImageBitmap(bitmap); </span>
- <span style="color: black;"> } </span>
- <span style="color: black;"> } </span>
- <span style="color: black;">} </span>
</div>
<span style="color: #000000;"> OK完成</span>
💬 评论