Android 如何调整相机图片的大小并将其保存为位图以在活动内的固定矩形区域中显示

2024-07-01

我有一个可以拍摄项目照片的应用程序,并且这些项目必须在 ActivityScreen 上的某个固定区域中可见。问题是活动中显示的来自保存的位图的图片与我预览和拍摄的图片完全不同。它看起来放大了,并显示了我拍照时在预览中没有看到的区域:这是关键代码行

图像捕捉:

surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

captImageView = (ImageView)findViewById(R.id.CamImageView);

byte [] photoData;
Camera cam;
SurfaceHolder surfHolder;
SurfaceView surfView;


Camera.PictureCallback cback;

cback = new Camera.PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

                        final int length = data.length;
                opts.inSampleSize = 4;
            final BitmapFactory.Options opts = new BitmapFactory.Options();    
            Bitmap bMap = null;

            try {

                    bMap = BitmapFactory.decodeByteArray(data, 0, length, opts);

            } catch(Exception e) {

            }catch(OutOfMemoryError e) {

            } 

            captImageView.setImageBitmap(bitmap);

            if(bMap==null) {
               cam.startPreview();
            } else {
                             savePhotoButton.setVisibility(ImageView.VISIBLE);
                 takePhotoButton.setVisibility(ImageView.INVISIBLE);
                 photoData = data;
            }
        }
 }

图像保存:

captImageView.setImageBitmap(null);
// SAVE THE PICTURE   THIS SAVES PICTURE IN WRONG SIZE.  LOOKS LIKED ZOOMED IN NOT WHAT WAS PREVIEWED!!!


           public void photoSave(byte[] data) {

               final int length = data.length;
           final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 2;

                try {
        Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, length, options);
         int quality = 75;
             File file = new File(getDir(), fname);
         fileOutputStream = new FileOutputStream(file);
         bMap.compress(CompressFormat.JPEG, quality, fileOutputStream);
        }catch(FileNotFoundException e) {

        }  catch(OutOfMemoryError e) {} }

图像显示为可在活动中绘制 不起作用,无法显示缩放后的图像或拍摄照片时在预览中根本看不到的部分!

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = inSampSize;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);

Drawable drawable = bitmap;
ImageView pictureView = (ImageView)findViewById(R.id.pictureViewer);
pictureView.setImageDrawable(drawable);

None

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

Android 如何调整相机图片的大小并将其保存为位图以在活动内的固定矩形区域中显示 的相关文章

  • Firebase 和 Google Play 服务之间要使用哪些依赖项?

    我最近开始使用 Firebase 但我无法完全理解它与 Google Play Services 的关系 我知道Firebase是一个移动平台 在Android上它是基于Google Play Services的 但是为什么有一些模块与Go
  • 以编程方式切换进度条的颜色

    所以我有一个图层列表 其中包含一个具有形状和纯色的项目 现在我想在我的代码中更改这种颜色
  • 当应用程序离开后台并在 iOS 和 Android 中返回时,WebView 正在重新加载?

    我有一个小应用程序 它仅包含一个网络视图 我正在使用 url 加载网络视图 但是当我的应用程序进入后台并返回时 网络视图正在重新加载 对我来说 这不应该发生 在 iOS 和 Android 中 当应用程序进入后台时 如何停止 webview
  • 在 Eclipse 中打开 Android XML 布局的快捷方式

    例如 如果我有类似的东西 setContentView R layout activity main 有没有快捷方式可以打开activity main xml 如果没有 有没有办法创建一个 Its there Just hold Ctrl
  • Android:在服务器端验证应用程序的完整性

    我正在编写一个通过 HTTPS 与服务器应用程序进行通信的 Android 应用程序 在服务器端 我必须绝对确定 Android 应用程序的完整性 这意味着服务器应用程序需要确保它与我开发的 Android 应用程序通信 而不是与重写的应用
  • 在android 2.3.6中如何通过联系人提供程序获取联系人照片?

    我有这个适用于 android 4 的版本 String email是 Gmail 地址 private Uri getPhotoUriFromEmail String email Uri u null String projection
  • Android 上的 wifi 聊天

    Android 上可以使用 Wifi 聊天吗 我的要求是我的电脑与 wifi 适配器连接 并且我的 Android 设备有 wifi 我想将我的电脑转换为服务器 将 Android 设备转换为客户端并实现聊天 这可能吗 请帮帮我 显然这是可
  • Android模拟器相机自定义图像

    有谁知道模拟器相机启动时可以打开一些个人照片吗 我有一个基于图像分析的应用程序 我希望当我单击相机按钮时 相机会打开而不是默认的 Android 模拟器移动图像 我希望它打开一些我设置为默认图像的图像 因此 当我选择拍照时 它只会显示该图像
  • java.io.IOException:服务发现失败

    我正在开发一个 Android 应用程序 在两部配对的智能手机之间使用蓝牙连接 蓝牙逻辑基于著名的BluetoothChat SDK示例 管理服务器线程的 服务 类accept 一个客户端线程connect 和一个用于在套接字上读 写的线程
  • 将 compose 示例项目导入到 android studio 版本 4.2

    我正在尝试导入编写示例项目 https github com android compose samples 但我面临这个错误 Invalid injected android support version 202 7660 26 42
  • 函数无法解析 Android NDK

    我正在尝试构建 NDK 项目 但遇到错误 这reverse在使用 JNI 和 NDK Android 的项目中无法解析该函数 您可以在附图中看到这一点 我已在路径和符号部分的项目属性中添加了路径 gt 也请参阅屏幕截图 None
  • Android:如何设置 Spinner 的最大尺寸?

    这是我的布局
  • 在 onClick 处理程序的活动类 [...] 中找不到方法 [...](View)

    当我按下按钮时fragment main xml 出现这个错误 java lang IllegalStateException Could not find a method sendMessage View in the activity
  • 从相同的代码创建应用程序的免费/付费版本

    所以我现在要讨论我的应用程序的发布时间了 我们计划发布两个版本 一个是基于广告的免费解锁版本 另一个是付费完全解锁版本 我设置了代码 只需在启动时设置一个标志即可启用 禁用广告并锁定 解锁所有功能 因此 从字面上看 这些版本之间只有一行代码
  • 语音识别 API,Google Voice 会这么做吗?

    我有一个 Android 应用程序的想法 我希望能够说出命令并让应用程序监听这些命令并执行一些操作 例如 我希望我的应用程序闲置并听我的声音 当它听到我说 开始 时 应用程序将开始执行某些操作 直到我说 停止 这个想法是把手机放下 而不必实
  • 保存新图像时,它会保留旧画布

    我有一个画布 允许用户绘制和保存 它还允许用户更改颜色并在同一画布上使用不同的颜色进行绘制 我的绘画课 package com test testing import android content Context import andro
  • 在单元测试用例中未调用 AsyncTask onPostExecute()

    我看过很多与此相关的帖子 但似乎没有一个与我遇到的问题相同 GetBusinessRulesTask 扩展了 AsyncTask 当我在单元测试用例中执行此操作时 onPostExecute 永远不会被调用 但是 如果我使用真正的客户端代码
  • Arcgis:如何获取设备位置

    我如何尝试在我的应用程序中实现这些代码 但它不起作用 我不知道哪里出了问题 基本上 当我启动设备位置的示例时 它没有显示我当前所在的位置 并且我没有看到任何与我当前所在位置类似的蓝点 我唯一看到的就是地图 只是一个简单的缩小地图 如果有人可
  • 处理 Android 自定义内容提供程序中的(跨进程)异常

    我的 Android 应用程序中有一个自定义内容提供程序 运行得相当不错 我希望其他应用程序也可以访问我的内容提供商 我想要一些干净的方法来传达异常和错误 但据我所知 Android 内容提供程序框架没有提供任何跨进程传播异常的方法 我应该
  • 在这种情况下是否违反了 Google Play 开发者政策? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想通过 Android 应用程序赚一些钱 但我面临一个大问题 Google 在 Google Play 上不支持我所在的国家 地区 适用

随机推荐