以良好的质量和内存效率缩小资源中的位图

2024-03-31

我想缩小 500x500px 资源以始终适合由屏幕宽度确定的特定尺寸。

目前我使用 Android 开发者网站 (高效加载大位图 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html),但质量不如我在 a 中使用 500x500px 资源ImageView(作为 xml 中的源)并缩放ImageView而不是位图。

但它很慢,我想扩大规模Bitmap也可以提高内存效率和速度。

编辑:我想要缩放的可绘制对象位于drawable我的应用程序的文件夹。

Edit2:我目前的方法。

左图是来自的方法高效加载大位图 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html无需任何修改。中心图像是使用@Salman Zaidi 提供的方法完成的,并进行了一些小小的修改:o.inPreferredConfig = Config.ARGB_8888; and o2.inPreferredConfig = Config.ARGB_8888;

正确的图像是一个图像视图,其中图像源在 xml 中定义,并且质量是我希望通过缩放位图达到的质量。


private Bitmap decodeImage(File f) {
    Bitmap b = null;
    try {
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;

        FileInputStream fis = new FileInputStream(f);
        BitmapFactory.decodeStream(fis, null, o);
        fis.close();

        float sc = 0.0f;
        int scale = 1;
        //if image height is greater than width
        if (o.outHeight > o.outWidth) {
            sc = o.outHeight / 400;
            scale = Math.round(sc);
        } 
        //if image width is greater than height
        else {
            sc = o.outWidth / 400;
            scale = Math.round(sc);
        }

        // Decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize = scale;
        fis = new FileInputStream(f);
        b = BitmapFactory.decodeStream(fis, null, o2);
        fis.close();
    } catch (IOException e) {
    }
    return b;
}

这里“400”是新的宽度(如果图像处于纵向模式)或新的高度(如果图像处于横向模式)。您可以设置自己选择的值。缩放后的位图不会占用太多内存空间。

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

以良好的质量和内存效率缩小资源中的位图 的相关文章

  • 升级到最新支持库后Android JACK编译器错误

    Android Studio 2 2 3 Windows 10 64位 构建工具版本 25 Android Gradle插件版本2 2 3 升级到最新的支持库 从 23 4 0 到 25 1 0 并更改编译版本 从 23 到 25 后 我收
  • Android ToggleButton 始终检查

    如果切换按钮处于选中或取消选中状态 我想存储在 SharedPreferences 中 toggle setOnCheckedChangeListener new OnCheckedChangeListener public void on
  • Android中将JSON数据存储到本地数据库

    好的 我创建了一个应用程序 它使用 JSON 从我的服务器检索数据 现在我想将检索到的数据存储在手机的本地存储 数据库中 我该怎么做 我是android编程新手 这是我从服务器收到的 JSON messages id 44 issender
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • Android Camera.takePicture() 有时不返回?

    我正在编写一个Android 拍照应用程序 该代码在 onPreviewFrame byte data Cameracamera 中从预览中获取帧后进行一些处理 问题在于 android hardware Camera 的函数 takePi
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • 当我单击“完成”键时,Android OnEditorActionListener() actionId 给出 0

    我创建了一个键盘 当用户输入数字时 它会输入特定的 EditText 但是当用户单击Done关键 它没有去setOnEditorActionListener但它关闭了键盘 这是我的代码 final EditText txtQty new E
  • 如何使用 RecyclerView 创建此布局?

    我正在尝试使用这种类型的布局创建回收器视图 这些项目是字符串 可以以不同的大小出现 我不知道每行中有多少项目 我可以使用 StaggeredGridLayoutManager 来做到这一点吗 该图像只是一个假示例 每行可以有更多项目 您可能
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • 自动删除 Firebase 通知

    我有一个问题 我都读过让通知在 5 分钟后消失 https stackoverflow com questions 15648699 make notification disappear after 5 minutes and 几秒钟后清
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • Jetpack Compose:制作全屏(绝对定位)组件

    我怎样才能在全屏渲染树的深处制作一个可组合的 类似于Dialog可组合作品 例如 当用户单击图像时 它会显示该图像的全屏预览 而无需更改当前路线 我可以用 CSS 来做到这一点position absolute or position fi
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • onPrepareOptionsMenu 复制 ActionBar 中的项目

    当我使用 onPrepareOptionsMenu 添加菜单项时 该菜单项会在操作栏中复制其自身 我正在使用片段并在主要活动的 ActionBar 中创建初始菜单 如下所示 Override public boolean onCreateO
  • Android 从通知刷新 Activity

    我有一个程序 我在其中调用通知 如果您将其下拉 该通知将启动一个新活动 mNotificationManager NotificationManager getSystemService ns int icon R drawable sta

随机推荐

  • 创建不兼容的数字子类型

    在 Ada 中 可以创建不兼容的等效数字类型 type Integer 1 is range 1 10 type Integer 2 is range 1 10 A Integer 1 8 B Integer 2 A illegal 这可以
  • 在 if 语句中使用 or (Python) [重复]

    这个问题在这里已经有答案了 我只是写一个简单的 if 语句 仅当用户键入 Good 时 第二行才计算为 true 如果 太棒了 输入后 它将执行 else 语句 我可以不使用或喜欢这个吗 我需要逻辑还是 weather input How
  • 我在 Visual Studio 中的项目是只读的。我做了什么?

    我一定是做错了什么 我在 Visual Studio 2008 中有一个 C 项目 突然 我看到我的类上有一个锁 当我将类名称悬停在顶部选项卡上时 我看到类名称为 C Myprojects Oder cs 只读 你以前发生过类似的奇怪事情吗
  • 未根据 OPTIONS 请求发送 Cookie

    对于我正在开发的 Angular 1 应用程序 使用了 cookie 身份验证 问题是 制作时OPTIONS调用 cookie 不会发送 服务器会尝试重定向用户以再次登录 只是想知道 这是谁的 错 服务器 Azure API 应用程序 还是
  • 错误:“_UserObject”对象没有属性“预测”

    我正在构建一个针对数据序列进行机器学习的 ANN 模型 当我调用模型来验证测试数据时 出现错误 model Sequential model add Dense 8 activation tanh input dim 10 model ad
  • PowerShell 脚本问题运算符

    我尝试在部署更新的驱动程序之前使用 PowerShell 检测 Intel NIC 驱动程序 我对脚本进行了一些更改以进行故障排除 以确保捕获正确的驱动程序版本 并最终验证操作符的正确使用 我可能不是 Change DeployVersio
  • 如何迭代天数

    我有一个循环 days this 的代码来制作叶子 我希望列签到和签出出勤将自动填充 从开始日期开始 到结束日期结束 exp I input startdate 2012 11 08 01 30 00 enddate 2012 11 10
  • Javafx字体派生粗体

    我想为我的 javafx 应用程序动态更改 加载的 文本字体 所以我做了以下代码 Font font Font loadFont Fonts class getClassLoader getResource path font woff t
  • 将变量从 Symfony2 传递到 Angular 范围的最佳方法

    作为许多其他开发人员面临的常见场景 我们有一个基于 Symfony2 TWIG 的成熟应用程序 并且一些 html twig 模板因 jQuery 代码过多而难以维护 抛弃 jQuery 并使用 Angular 怎么样 假设我有一些关于 A
  • 如何覆盖 net core web api 中的 OnAuthorization?

    早些时候我在 asp net 中实现了类似的东西 public class Authentication AuthorizationFilterAttribute public override void OnAuthorization H
  • 需要使用 d3 geoPath.projection(null) 缩放已经投影的数据

    基于 d3 1 4 版 文档https github com d3 d3 geo blob master README md geoProjection https github com d3 d3 geo blob master READ
  • 如何在不使用 zip() 的情况下将不同类型的 Future 组合成一个 Future

    我想创造一个类型的未来Future Class1 Class2 Class3 从下面的代码 然而 我发现做到这一点的唯一方法是使用 zip 我发现这个解决方案很丑陋而且不是最佳的 谁能启发我 val v for a lt val f0 Fu
  • 如何把照片贴在墙上?

    有人成功地将图片发布到当前用户的墙上吗 这是行不通的 如果图片参数是现有的图片 url 则不会显示 我正在使用最新的 FB C SDK 5 0 8 Beta var args new Dictionary
  • 如何重新加载 vue 组件?

    我知道解决方案是像这样更新道具数据 this selectedContinent 但我想使用另一种解决方案 在我阅读了一些参考资料后 解决方案是 this forceUpdate 我尝试了一下 但不起作用 演示和完整代码如下 https j
  • 向 Google 仪表添加 % 符号

    我正在使用 Google 仪表 并且想在仪表中的值后面添加一个 符号 我的值显示良好 没有百分比符号 整数 0 100 但是当我开始尝试添加百分比符号时 事情变得不稳定 这是我尝试过的 Format the data to include
  • iPhone CoreText:查找子字符串的像素坐标

    这是 Twitter 应用程序的屏幕截图供参考 http screencast com t YmFmYmI4M http screencast com t YmFmYmI4M 我想要做的是将浮动弹出窗口放置在可以跨越多行的 NSAttrib
  • 如何在 Puppeteer 中选择 iframe 元素内的元素

    由于 ESPN 不提供 API 因此我尝试使用 Puppeteer 来抓取有关我的 Fantasy Football League 的数据 但是 由于登录表单嵌套在 iframe 元素中 我很难尝试使用 puppeteer 登录 我已经去了
  • Next12 中带有 Prisma 适配器的 NextAuth 凭证提供程序不执行任何操作

    我已经设置了我的Nextjs Next12 with NextAuth 凭证提供者并使用棱镜适配器将用户会话保留在数据库中 我跟着这个文档 https next auth js org adapters prisma来自 NextAuth
  • 求解混合互补模型时出错

    直接使用 PATH 求解器 我无法解决下面提出的问题 最初的问题来源于https prod sandia gov techlib noauth access control cgi 2015 155584 pdf https prod sa
  • 以良好的质量和内存效率缩小资源中的位图

    我想缩小 500x500px 资源以始终适合由屏幕宽度确定的特定尺寸 目前我使用 Android 开发者网站 高效加载大位图 http developer android com training displaying bitmaps lo