在 Android 上将大位图文件的大小调整为缩放的输出文件

2024-05-13

我的文件中有一个大位图(例如 3888x2592)。现在,我想将该位图大小调整为 800x533 并将其保存到另一个文件中。 我通常会通过调用来缩放位图Bitmap.createBitmap方法,但它需要一个源位图作为第一个参数,我无法提供它,因为将原始图像加载到 Bitmap 对象中当然会超出内存(请参阅here https://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue, 例如)。

我也无法读取位图,例如,BitmapFactory.decodeFile(file, options),提供一个BitmapFactory.Options.inSampleSize,因为我想将其调整为精确的宽度和高度。使用inSampleSize会将位图大小调整为 972x648(如果我使用inSampleSize=4)或778x518(如果我使用inSampleSize=5,它甚至不是 2) 的幂。

我还想避免在第一步中使用 inSampleSize 读取图像,例如使用 972x648,然后在第二步中将其大小调整为正好 800x533,因为与直接调整原始图像大小相比,质量会很差。

总结一下我的问题: 有没有办法读取 10MP 或更大的大图像文件并将其保存到新图像文件,调整大小到特定的新宽度和高度,而不会出现 OutOfMemory 异常?

我也尝试过BitmapFactory.decodeFile(file, options)并手动将Options.outHeight和Options.outWidth值设置为800和533,但它不起作用。


No.我很乐意有人纠正我,但我接受了您尝试的加载/调整大小方法作为妥协。

以下是任何人浏览的步骤:

  1. 计算可能的最大值inSampleSize仍然会产生比您的目标更大的图像。
  2. 使用加载图像BitmapFactory.decodeFile(file, options),将 inSampleSize 作为选项传递。
  3. 使用调整大小到所需的尺寸Bitmap.createScaledBitmap().
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 上将大位图文件的大小调整为缩放的输出文件 的相关文章

  • 如何用PHP读取图像?

    我知道 localfile FILES media tmp name 如果使用 POST 方法 将获取图像 我正在尝试读取与我的代码位于同一目录中的图像 我如何读取它并将其分配给像上面这样的变量 您发布的代码不会读取图像数据 而是读取其文件
  • 检查 key 是否存在 firebase Android

    我想检查 firebase 数据库中是否存在密钥 例如 我想查找关键的 upvotes 以查看它是否存在 Here is an exmaple upvotes key does not exist in here 现在我尝试检查密钥 upv
  • 即使具有用户权限,也无法在外部存储上保存文件 [Android]

    我正在 Android 上开发一个用于图像处理的应用程序 但我一直在编写图像保存代码 这是我使用的方法 private void saveImageToExternalStorage Bitmap finalBitmap String ro
  • 如何将弹出菜单项的方向从右向左更改?

    我知道这个问题被问了很多次 我使用了很多解决方案 但它对我不起作用 我想改变我的方向Menu to rtl用一个Popup但它不起作用 my menu menu menu
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • 文本末尾有额外的换行符

    使用此方法设置文本后 我似乎得到了一些额外的换行符TextView message setText Html fromHtml message 我怎样才能删除这些 它们导致我的布局扭曲 因为它在输出中添加了两条额外的行 该字符串已通过以下方
  • 使用 OpenWeatherMap API 密钥

    我得到异常 http api openweathermap org data 2 5 weather q 悉尼 http api openweathermap org data 2 5 weather q Sydney 有人可以帮助如何使用
  • 如果使用键盘,如何捕获 TimePicker 中的时间变化?

    我有一个小部件 它是一个 TimePicker 用于检索数据库字段中保存的时间 问题是 当用户更改小部件中的时间值时 这不会保存在数据库中 所以我遇到了setOnTimeChangedListener如果您只在小部件中使用加号和减号 那么该
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • onPictureTaken 之后旋转 JPEG 的字节数组

    有没有办法旋转字节数组而不将其解码为位图 目前在 jpeg PictureCallback 中我只是将字节数组直接写入文件 但图片是旋转的 我想旋转它们而不解码为位图 希望这能节省我的记忆 BitmapFactory Options o n
  • 最好使用的游戏/物理引擎?

    寻找用于移动游戏开发的游戏 物理引擎 iPhone 有Cocos2D http www cocos2d iphone org 我找到的安卓系统RokonAndroid http rokonandroid com 只是想知道是否还有其他人知道
  • 使用协程对任务进行排队

    我最近开始阅读有关协程的内容 我想询问某个场景 考虑一个带有一个按钮的简单屏幕 单击后 它会执行一堆打印语句和一些延迟 其间 到目前为止 我正在使用协程来实现这一目标 现在 我的问题是 如果用户反复向该按钮发送垃圾邮件 是否有一种方法可以将
  • 使用 ACTION_VIEW Intent Action 启动文件

    我有以下代码来启动文件 try path fileJsonObject getString filePath if path indexOf 0 path path substring 1 path length path root pat
  • 使用 PHP 上传、调整图像大小并裁剪图像中心

    我想要创建一个非常非常基本的上传 调整大小和裁剪 PHP 脚本 其功能与 Twitter 用于上传头像图片的方法相同 无论如何我最后检查过 我希望脚本拍摄任何尺寸的图像 将最短边的大小调整为 116 像素 然后裁剪顶部和底部 如果是横向 则
  • Keytool 不要求别名密码

    我正在尝试生成一个密钥库文件来签署我的 React Native Android 应用程序并将其发布到 Play 商店 我正在尝试按照本文档中的描述进行操作 https facebook github io react native doc
  • 如何更改Android软键盘中任意键的按键背景

    我想让键盘上的一些键与其他键不同 例如下图中的shift 删除 空格键 根据google的参考文档 我们可以通过使用 来改变按键的背景android keybackground drawable xxx in input xml 但它改变了
  • Android 上的 Facebook 社交插件

    我想集成 Facebook 的评论社交插件 https developers facebook com docs reference plugins comments https developers facebook com docs r
  • 如何在没有片段的情况下使用导航抽屉?

    我正在尝试遵循这个tutorial https developer android com training implementing navigation nav drawer html关于如何创建导航抽屉 但我不想在用户从抽屉列表中选择
  • 将 Spritekit 游戏转换为 Android?

    是否有任何新选项可以将 spritekit 游戏转换为 Android 游戏 似乎唯一的选择是用 Java 重新编码所有内容或使用 Cocos2D LibGDX 等 很不幸的是 不行 而且带有 Apportable 服务的跨平台 Sprit
  • 如何从 Google Fit API 获取步数?

    请原谅我的笨蛋 我对 Android 和 Google API 完全陌生 我有以下连接到 GoogleFit 的代码 我还有一个 API 密钥和 Oauth 我在哪里 如何使用 API 密钥和 Oauth 关于如何获取它们的指南有很多 但关

随机推荐

  • 我应该在 Heroku 上的哪里存储敏感文件?

    这个问题可能有一个明显的答案 只是我没有想到 我知道敏感数据 例如安全凭证 最好通过 Heroku 的 CLI 使用环境变量存储在 Heroku 等服务上heroku config add 但敏感的怎么办files 比如证书 具体来说 我想
  • 如何使用 XCode 在 iOS 应用程序中的推文中上传视频

    我是 iOS 开发新手 需要对我正在接管的 iOS 应用程序进行更改 以将视频添加到推文中 我当前的应用程序 UI 允许用户输入推文文本 但我将对其进行更改 以允许他们选择要与推文一起上传的视频 类似于 Twitter 应用程序的工作方式
  • 非二叉树的中序树遍历

    对于比二叉树更宽的树 术语 中序遍历 是否有明确定义的含义 或者 前 和 后 顺序是唯一有意义的 DFS 类型吗 我的意思是与n每个节点 gt 2 个子节点 我猜是为了n这甚至可能意味着之后要转到 根 n 2孩子们 但这曾经这样使用过吗 那
  • Typescript 通用联盟

    所以我有通用对象数组 想要迭代但打字稿不允许我 这是一些示例代码 有关如何解决此问题的任何建议 type someGeneric
  • 一起使用“过滤”和“排序”的 Google 表格

    这是我的第一个问题 我希望一切都好 我是使用谷歌表格的新手 但我正在慢慢进步 我正在尝试构建一个工作表 其中包含工作表 1 中的所有数据 在工作表 2 上 我想过滤工作表 2 中 D 列中标有数字 1 的所有数据 为此 我正在使用 FILT
  • 如何为多个 BO 属性定义 IDataErrorInfo 错误属性

    我开始通过 IDataErrorInfo 接口在我的 WPF 项目中实现验证 我的业务对象包含多个带有验证信息的属性 如何获取与该对象关联的所有错误消息的列表 我的想法是 这就是 Error 属性的用途 但我无法追踪任何使用它来报告多个属性
  • 使用UDID创建唯一的用户身份

    我正在开发一个 iPhone 应用程序 它与服务器通信以存储和交换数据 因为我想让它尽可能简单 所以我想避免用户帐户的注册 或者也可能使用密码 是否有可能 并且允许 获取 iPhone 设备的 UDID 并制作例如 它的 MD5 哈希值 我
  • 如何在不使用数据库的情况下保存应用程序的配置??? (使用简单的文本文件)

    我需要保存一个简单的字段来配置我的应用程序 因此 我不会使用数据库 它只是一个字段 我需要在文件中保存该字段的 true 或 false 值 并且每次都会有一部分我的应用程序想要检查是否属实 他们必须检查此文本文件 而不是打开与数据库的连接
  • 如何对 Firebase 中托管的静态网站进行 IP 白名单? / 是否有用于 Firebase 托管的 WAF?

    我有一个在 Firebase 中托管的静态网站 我可以很好地附加一个自定义域 我想将对我的网站的访问限制在特定范围的 IP 范围内 我知道在 GCP 中 Google Cloud Armor 可以做到这一点 但 Cloud Armor 仅适
  • 如何预览 Git 中的隐藏内容?

    我想检查一个存储 并找出如果我将其应用于当前状态的工作树 它会发生什么变化 我知道我可以对存储进行 git diff 但这向我展示了工作树和存储之间的所有差异 而我只是想知道存储应用将改变什么 git stash show将向您显示最近存储
  • 继承层次结构中接口与实现的分离(C++ 新手)

    我正在想办法如何安排一些课程 这就是我到目前为止所得到的 继承层次结构的顶层 自然 是 T T h namespace foo class T public virtual void method1 std string a paramet
  • 如何使用 Vue.js 向数组(数据)中的所有对象添加属性?

    背景 我在 data 中有一个数组 其中填充了来自后端的对象 如果 GET 请求检索 6 个对象 这 6 个对象将在数组中更新 Problem 我已经了解需要 vm set 来向对象添加属性 但是如何为数组中的所有对象添加属性呢 我想改变
  • 有限字母字符串

    我有一个很长的字符串 字母表有限为 4 个 我可以以不同的方式存储该字符串 以便它占用更少的空间 因为它的字母表比普通字符串小 在我的代码中 我从不编辑这个字符串 只访问索引处的字符 如果对基因组比对算法有帮助的话 字母表是 ACTG No
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • 如何在 IPython 中设置 markdown 链接的基本 url?

    我很高兴地设置 在我的 IPython html 笔记本 IPython 0 12 的 Markdown 单元中 以便能够将链接缩写为 wiki documentation doc html 在 Markdown 单元格中 但这使得保存笔记
  • Subversion 将未修改的文件标记为已修改

    这是我在使用 Subversion 时遇到的一个奇怪的问题 当从开发分支合并到主干 或返回 时 Subversion 会将许多文件标记为已更改 而它们没有任何更改 发生的情况如下 在我的分支中 我提交了 1 个修改过的文件 在主干中我合并了
  • 将输入值保存到本地存储并在不同页面上检索它

    我有一个包含 3 个不同页面的网页 page1 page2 和 page3 在第一页上 用户将在文本框中输入他的名字 我想将该值存储到本地存储中 以便在第 2 页和第 3 页上再次使用 我什至无法在第 1 页上检索它 难道我做错了什么 而且
  • 无界通配符类型在运行时如何工作?

    我知道无界通配符类型将被删除并替换为对象 vy 类型擦除 无界通配符类型是可具体化类型 其类型信息在运行时完全可用 我知道两者之间的区别List List List list new ArrayList
  • 在 Android 上将大位图文件的大小调整为缩放的输出文件

    我的文件中有一个大位图 例如 3888x2592 现在 我想将该位图大小调整为 800x533 并将其保存到另一个文件中 我通常会通过调用来缩放位图Bitmap createBitmap方法 但它需要一个源位图作为第一个参数 我无法提供它