zoukankan      html  css  js  c++  java
  • 竖屏拍照,但是sd卡中却是横屏解决方法

    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;  
      
            }  
        }  

    setImage方法里面对图片进行旋转

    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);  
            }  
        }  
    }  

    如果获取不到uri,可以尝试直接将bitmap传到方法里进行操作

  • 相关阅读:
    垃圾回收于内存优化(摘自网络)
    as3.0 动态改变影片剪辑的颜色
    2进制_8进制_16进制之间快速转换的技巧.txt
    24位真彩色转换为8位灰度图片(完整代码)
    大端模式和小端模式
    如何将真彩色图转换为各种灰度图
    C++图像缩放
    二进制转十进制快速转换方法
    电脑上运行的使用大全
    移位运算符详解
  • 原文地址:https://www.cnblogs.com/robben/p/4772749.html
Copyright © 2011-2022 走看看