捕获的图像总是显示横向并且无法解决setRotate

2024-05-05

这里有很多类似的主题和问题,我关注this https://stackoverflow.com/a/12933632/5257704。但我收到错误。

My Code

@Override

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

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
            //h=0;
            File f = new File(Environment.getExternalStorageDirectory().toString());
            for (File temp : f.listFiles()) {
                if (temp.getName().equals("temp.jpg")) {
                    f = temp;
                    File photo = new File(Environment.getExternalStorageDirectory(), "temp.jpg");
                    //pic = photo;
                    break;
                }
            }

            try {
                Bitmap bitmap;
                BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
                bitmapOptions.inJustDecodeBounds = false;
                bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
                bitmapOptions.inDither = true;
                bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
                Global.img = bitmap;

                b.setImageBitmap(bitmap);
                String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default";
                //p = path;
                f.delete();
                OutputStream outFile = null;
                File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
                try {

                    outFile = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                    //pic=file;
                    outFile.flush();
                    outFile.close();


                } catch (FileNotFoundException e) {
                    e.printStackTrace();

                } catch (IOException e) {
                    e.printStackTrace();

                } catch (Exception e) {
                    e.printStackTrace();
                }

            } catch (Exception e) {
                e.printStackTrace();

            }

        } else if (requestCode == 2) {

            Uri selectedImage = data.getData();
            // h=1;
            //imgui = selectedImage;
            String[] filePath = {MediaStore.Images.Media.DATA};
            Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
            Log.w("path of image ******", picturePath + "");
            b.setImageBitmap(thumbnail);
        }


    }
    else
    {
        finish();
    }

}

按照教程后,我将代码更改为

  try {
             Bitmap bitmap;
             BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
             bitmapOptions.inJustDecodeBounds = false;
             bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
             bitmapOptions.inDither = true;
             bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
              BitmapFactory.Options opts = new BitmapFactory.Options();
              Bitmap bm = BitmapFactory.decodeFile(f.getAbsolutePath(), opts);
              ExifInterface exif = new ExifInterface(f.getAbsolutePath());
              String orientString = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
              int orientation = orientString != null ? Integer.parseInt(orientString) :  ExifInterface.ORIENTATION_NORMAL;
               int rotationAngle = 0;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_90) rotationAngle = 90;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_180) rotationAngle = 180;
               if (orientation == ExifInterface.ORIENTATION_ROTATE_270) rotationAngle = 270;
               Matrix matrix = new Matrix();
               matrix.setRotate(rotationAngle, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2);
               Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);
               Global.img = bitmap;
               b.setImageBitmap(bitmap);
               String path = android.os.Environment
                          .getExternalStorageDirectory()
                           + File.separator
                           + "Phoenix" + File.separator + "default";
                    //p = path;

                    f.delete();

                    OutputStream outFile = null;

                    File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
  1. matrix.setRotate中的setRotate无法解决。
  2. 我在下面看到一条红线(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);(无法解析方法 createBitmap )

*********编辑*********

我导入后android.graphics.Matrix代替android.opengl.Matrix,该应用程序崩溃了。

日志猫错误

  Process: com.example.project.project, PID: 13045
    java.lang.OutOfMemoryError
            at android.graphics.Bitmap.nativeCreate(Native Method)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:928)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:901)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:833)
            at com.example.project.project.ImageFitScreen.onActivityResult(ImageFitScreen.java:236)
            at android.app.Activity.dispatchActivityResult(Activity.java:5643)

这是第 236 行

 Bitmap rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bitmapOptions.outWidth, bitmapOptions.outHeight, matrix, true);

更改为此位图rotatedBitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(),matrix, true);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

捕获的图像总是显示横向并且无法解决setRotate 的相关文章

  • 将多个视频文件合并到一个文件中

    我有多个以相同帧速率和分辨率录制的视频 我想将两个视频合并为一个视频 因此结果文件将是大视频 我正在使用 MP4 解析器 api 并使用下面的代码 Movie countVideo new MovieCreator build Channe
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • 如何从 Android L 预览设计制作 Android 列表视图设计

    我制作Android L预览图像样式列表项 这是我针对这些类似设计的代码 可绘制 list item bg xml
  • 没有 ContentProvider 的 SyncAdapter

    我想为我想要与服务器同步的内容实现 SyncAdapter 看来要做到这一点 您需要为 SyncAdapter XML 属性文件中指定的权限注册一个 ContentProvider 由于我不希望手机的其余部分可以访问此内容 因此我没有实现自
  • 驱动程序信息:driver.version:未知,使用 ChromeDriver v78.0.3904.70 和 Chrome 浏览器 v78.0.3904.97

    我使用的是java 1 8和chrome浏览器版本78 0 3904 97 我正在尝试使用 chrome 驱动程序版本执行我的 selenium 脚本代码78 0 3904 70 但在执行时我面临以下问题并且 chrome 立即崩溃 Pic
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 链表中的虚拟节点

    问 什么时候使用它们 作业问题 列表中的第一个和最后一个节点 有时用作列表中的第一个和最后一个节点 从未用作列表中的第一个和最后一个节点 维基百科说 哨兵节点是与链接一起使用的专门指定的节点 列表和树作为遍历路径终止符 哨兵节点的作用是 不
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • Checkstyle - 方法按修饰符排序

    是否可以添加到 checkstyle 规则以按修饰符对类中的方法进行排序 我的意思是开头的公共方法和最后的私有方法 MethodsOrderCheck做这个工作 检查文档 https www qulice com qulice checks
  • 如何修改生成的SOAP请求?

    我正处于创建输出拦截器并从 SOAP 消息中获取 OuputStream 的阶段 但是 如何在将 SOAP 信封发送到端点之前对其进行修改呢 我想删除一些 xml 元素 一种方法是获取文档并通过 XSLT 转换运行它 您可以通过调用来获取拦
  • 将base64图像转换为Node Js中的文件

    我是 Node Js 新手 我需要包含用户的个人资料图片 我从 IOS 应用程序收到 Base64 图像的请求 我需要将其存储在 images 文件夹中并将图像路径保存在 mongodb 数据库中 我使用了以下代码 var bitmap n
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • spring data jpa 过滤 @OneToMany 中的子项

    我有一个员工测试实体是父实体并且FunGroup信息子实体 这两个实体都是通过employeeId映射 我需要一种方法来过滤掉与搜索条件匹配的子实体 以便结果仅包含父实体和子实体 满足要求 员工测试类 Entity name Employe
  • 在模拟器中启动应用程序后,“React Native run android”立即停止

    我正在尝试测试我的 Android 应用程序 但是当我启动它时react native run android命令在设备上启动后立即停止 不会出现错误 我懂了 This build could be faster please consid
  • 将带有时区的 Joda-Time `DateTime` 转换为没有时区的 DateTime?

    Given a DateTime http www joda org joda time apidocs org joda time DateTime html例如2015 07 09T05 10 00 02 00 using 乔达时间 h
  • 水平 RecyclerView 顶部的滚动条

    我正在做简单的演示卧式RecyclerView 我想与回收视图一起显示滚动条 所以我添加了android scrollbars horizontal and android scrollbarSize 5dp 在 XML 中 我可以获得滚动
  • 安卓框架?

    是否有任何框架比构建 Android 应用程序更容易 您会对其中一个感兴趣吗 很快就会有 我正在开发 DroidFu 一个 Android 共享库 它将为您提供 活动 和服务 中直接提供大量实用功能 例如生成列表和错误对话框 检查 Inte

随机推荐

  • Flask 会话不持久(Postman 有效,Javascript 无效)

    我正在开发一个 Flask 服务器 用于通过网络在一些后端 Python 功能和 Javascript 客户端之间进行通信 我正在尝试利用 Flask 的session变量来存储用户在与应用程序交互过程中的特定数据 我已经删除了下面大部分应
  • WebUSB 和 RFID 读取器

    我想知道是否有人有让 RFID 读取器通过 WebUSB 工作的经验 我使用的阅读器是https www parallax com product 28340 https www parallax com product 28340 根据我
  • ng-cloak 对于 Angular ui-router 在模板解析时隐藏元素没有帮助

    我正在使用角度用户界面路由器 我想展示一些东西如果 div 当模板下载并立即显示时 我们可以在控制器加载之前看到 div 的闪烁 scope total 有人会认为 scope total在开始时未定义 因此 div 将被隐藏 但我认为模板
  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • Android fill_parent 到 match_parent

    引入 match parent 和弃用 fill parent 背后的原因是什么 因为两者含义相同 此更改不会妨碍向后兼容性吗 使用 match parent 而不是 fill parent 不会使生成的 APK 在旧版本中无法运行 因为在
  • gwt 谷歌应用引擎 HTTP 错误 404

    我在 Eclipse 中使用 google 应用程序引擎创建了一个新的 gwt 项目 但是当我运行该项目时 在浏览器中我收到以下消息 HTTP 错误 404 访问 Test html 时出现问题 原因 NOT FOUND 由码头提供动力 现
  • 多维数组(如 C/C++ 中的数组)是不规则数组的特殊情况吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我和一个哥们讨论了C 和C多维数组是否是不规则数组的特例 一种观点是 多维数组不是参差不齐的数组 因为多维数组的每个元素具有相同的大小 在参差不齐的数
  • IE11 中的 JavaScript 给我脚本错误 1003

    我有一个带有手风琴和一些 javascript 的网站 在 Firefox 中一切正常 但在 IE11 中出现错误 SCRIPT1003 应为 我将其范围缩小到 js 文件中的这段代码 var nmArray new Array funct
  • 如何(如果可能)更改 eclipse(月出主题)中突出显示的搜索结果的颜色选项?

    我已将 Eclipse Kepler SR2 主题更改为 Moonrise 0 8 9 现在 突出显示对象的颜色使结果几乎不可见 我没有找到任何选项来修改文本颜色或背景颜色 我已附加搜索视图 要更改突出显示的行搜索结果 请转到 Window
  • 如何在节点红色中进行http重定向?

    我需要重定向到另一个网址 我正在使用nodered请求一个url 然后获取用户名和密码 在cloudant数据库中检查它们 在发现它们存在之后 我需要重定向到另一个 home 是否有一个节点可以重定向 我尝试使用 http 请求节点 但它只
  • 如何使用 Apache HttpClient 4 获取文件上传的进度条?

    我有以下用于使用 Apache 的 HTTP Client org apache http client 上传文件的代码 public static void main String args throws Exception String
  • 具有水平和垂直组合布局的可折叠树

    我正在尝试在 D3 中创建一个可折叠树 它结合了水平 第一级和第二级 和垂直 3 级 布局 这里有一个jsfiddle http jsfiddle net artemkolotilkin z7tb23Lo 到目前为止我所得到的 除了一件事之
  • 带列的树视图

    我需要为我正在编写的应用程序提供一个多列树视图 我想知道是否有人知道免费工作 在 Vs 2010 中 多列树视图 网络上可以找到许多示例控件 Net 的 TreeViewAdv http sourceforge net projects t
  • Intellij Idea 使用什么 JVM 来启动?

    我是 Eclipse 用户 最近决定尝试 Intellij Idea 我的操作系统是 Ubuntu 12 使用 Eclipse 时 可以通过在 eclipse ini 中指定来轻松选择用于启动 Eclipse 的 JVM http wiki
  • Flutter - LinearGradient 的平滑过渡颜色

    Hellow 是否有解决方案可以创建在起始颜色和结束颜色之间平滑过渡的 LinearGradient new Container decoration new BoxDecoration gradient new LinearGradien
  • C# DLL 运行时错误 - 构建、运行,但在尝试使用 DLL 函数时抛出未处理的异常

    我正在尝试编译所示的示例项目here http www ftdichip com Support SoftwareExamples FTDIChip ID htm对于 C 它必须转换为 VS2010 但效果很好 它会构建 运行 但当它尝试访
  • 在来电期间更改呼叫者的号码

    首先我找到了一种方法 可以在拨出电话时修改被叫号码 我在来电期间尝试对呼叫者的号码进行相同的操作 但我唯一能做的就是读取呼叫者的号码 而不是更改它 有人可以给我提示吗 到目前为止我收到的代码 Bundle b intent getExtra
  • 可以从自定义 LoginModule 访问远程 EJB 吗?

    我发现了一些关于如何编写自定义领域和登录模块的好提示 我想知道是否可以在自定义登录模块中访问远程 EJB 就我而言 我有远程 EJB 提供对用户实体的访问 通过 JPA 我可以使用它们吗 例如通过 EJB 注释 好吧 我自己找到了答案 工作
  • 原始 ssh 连接(低级)

    作为一个小型 大型 业余爱好项目 我开始用 C 制作一个 非常原始的 ssh 2 0 客户端 这是为了探索和更好地理解 DH 并帮助加深我对加密的熟悉程度 根据 RFC 4253 我已经开始这样的初始连接 省略不相关的变量预设等 Rando
  • 捕获的图像总是显示横向并且无法解决setRotate

    这里有很多类似的主题和问题 我关注this https stackoverflow com a 12933632 5257704 但我收到错误 My Code Override protected void onActivityResult