获取图片库图片后旋转了90度的问题

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

 

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

Java代码   收藏代码
  1. @Override  
  2.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  3.   
  4.         switch (resultCode) {  
  5.         case 1:  
  6.             if (data != null) {  
  7.                 // 取得返回的Uri,基本上选择照片的时候返回的是以Uri形式,但是在拍照中有得机子呢Uri是空的,所以要特别注意  
  8.                 Uri mImageCaptureUri = data.getData();  
  9.                 // 返回的Uri不为空时,那么图片信息数据都会在Uri中获得。如果为空,那么我们就进行下面的方式获取  
  10.                 if (mImageCaptureUri != null) {  
  11.                     setImage(mImageCaptureUri);// 根据Uri处理并显示图片  
  12.                 }  
  13.             }  
  14.             break;  
  15.         default:  
  16.             break;  
  17.   
  18.         }  
  19.     }  

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

Java代码   收藏代码
  1. private void setImage(Uri mImageCaptureUri) {  
  2.   
  3.     // 不管是拍照还是选择图片每张图片都有在数据中存储也存储有对应旋转角度orientation值  
  4.     // 所以我们在取出图片是把角度值取出以便能正确的显示图片,没有旋转时的效果观看  
  5.   
  6.     ContentResolver cr = this.getContentResolver();  
  7.     Cursor cursor = cr.query(mImageCaptureUri, nullnullnullnull);// 根据Uri从数据库中找  
  8.     if (cursor != null) {  
  9.         cursor.moveToFirst();// 把游标移动到首位,因为这里的Uri是包含ID的所以是唯一的不需要循环找指向第一个就是了  
  10. //“_data”即MediaStore.Images.Media.DATA
  11.         String filePath = cursor.getString(cursor.getColumnIndex("_data"));// 获取路径
  12.         String orientation = cursor.getString(cursor  
  13.                 .getColumnIndex("orientation"));// 获取旋转的角度  
  14.         cursor.close();  
  15.         if (filePath != null) {  
  16.             Bitmap bitmap = BitmapFactory.decodeFile(filePath);//根据Path读取资源图片  
  17.             int angle = 0;  
  18.             if (orientation != null && !"".equals(orientation)) {  
  19.                 angle = Integer.parseInt(orientation);  
  20.             }  
  21.             if (angle != 0) {  
  22.                 // 下面的方法主要作用是把图片转一个角度,也可以放大缩小等  
  23.                 Matrix m = new Matrix();  
  24.                 int width = bitmap.getWidth();  
  25.                 int height = bitmap.getHeight();  
  26.                 m.setRotate(angle); // 旋转angle度  
  27.                 bitmap = Bitmap.createBitmap(bitmap, 00, width, height,  
  28.                         m, true);// 从新生成图片  
  29.                   
  30.             }  
  31.             photo.setImageBitmap(bitmap);  
  32.         }  
  33.     }  
  34. }  
 OK完成,需要拍照和选择图片功能的部分请看http://104zz.iteye.com/blog/1687662
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我无法提供直接的代码实现,但是我可以给你一些思路: 1. 使用freemarker引擎读取图片文件,获取图片的宽度和高度; 2. 使用Java图像处理(如ImageIO或Java 2D API)加载图片文件,并将其旋转90度; 3. 将旋转后的图片保存到新的文件中; 4. 在freemarker模板中使用新的图片文件。 以下是Java代码示例,可以在freemarker模板中使用: ```java <#assign imgFile = "path/to/image.jpg"> <#assign rotatedImgFile = "path/to/rotatedImage.jpg"> <#-- Load the original image --> <#assign img = javax.imageio.ImageIO.read(new java.io.File(imgFile))> <#-- Rotate the image 90 degrees --> <#assign rotatedImg = new java.awt.image.BufferedImage(img.getHeight(), img.getWidth(), img.getType())> <#assign g2d = rotatedImg.createGraphics()> <#assign at = new java.awt.geom.AffineTransform()> <#assign at.translate((img.getHeight() - img.getWidth()) / 2, (img.getWidth() - img.getHeight()) / 2)> <#assign at.rotate(Math.toRadians(90), img.getWidth() / 2, img.getHeight() / 2)> <#assign g2d.drawImage(img, at, null)> <#assign g2d.dispose()> <#-- Save the rotated image to a new file --> <#assign outputFile = new java.io.File(rotatedImgFile)> <#assign outputStream = new java.io.FileOutputStream(outputFile)> <#assign writer = javax.imageio.ImageIO.getImageWritersByFormatName("jpg").next()> <#assign params = writer.getDefaultWriteParam()> <#assign params.setCompressionMode(javax.imageio.ImageWriteParam.MODE_EXPLICIT)> <#assign params.setCompressionQuality(0.8f)> <#assign writer.setOutput(javax.imageio.ImageIO.createImageOutputStream(outputStream))> <#assign writer.write(null, new javax.imageio.IIOImage(rotatedImg, null, null), params)> <#assign writer.dispose()> <#-- Use the rotated image in the template --> <img src="${rotatedImgFile}"> ``` 请注意,此示例仅供参考,并可能需要根据您的特定需求进行修改。同时,我还建议您在处理图像时使用更专业的图像处理,例如OpenCV或JavaCV。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值