如何在 Android 中以最佳方式调整位图大小?

2024-01-10

假设我有一个六边形:

如果我调整它的大小以在包含六边形网格的应用程序中使用它:

// ...
bgPaint = new Paint();
bgPaint.setAntiAlias(true);
bgPaint.setDither(true);

// ...
Bitmap coloredBackground = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

// ...
canvas.drawBitmap(coloredBackground, null, getAsRect(), bgPaint);

我明白了:

getAsRect()返回一个Rect我用于绘图的对象。我想要实现的是摆脱边缘的那些透明像素。我认为我做错了什么,但到目前为止我找不到哪里。你知道我该如何解决这个问题吗?

我尝试尝试抖动和抗锯齿,但没有任何改变。


3条建议:

1

试试这个:通过设置解码资源时关闭系统的缩放BitmapFactory.Options.inScaled http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inScaled为假:

Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap source = BitmapFactory.decodeResource(context.getResources(), R.drawable.bg, options);

The inScaled如果您需要位图的非缩放版本,则应关闭该标志。

然后缩放你的位图Bitmap.createScaledBitmap(...).

2

另一个可能的原因是您的图块的黑色对角线包含不同的灰色阴影:

这是您的图块的特写:

在调整大小之前已对其进行了抗锯齿处理。任何不全黑的像素可能会在调整大小的线条中显示为较浅的颜色。您可以将线条更改为全黑(0xFF000000),并仅在调整大小后才进行抗锯齿。

3

此问题的另一个解决方案是像这样设计您的图块:

这避免了绘制两条相邻的抗锯齿对角线的问题。

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

如何在 Android 中以最佳方式调整位图大小? 的相关文章

随机推荐

  • 对于旧版浏览器,Azure 应用服务中的 HTTP/2 是否会自动回退到 HTTP/1.1

    我想为 Azure 应用服务托管的 Web 应用程序启用 HTTP 2 但是 我的用户中有 1 使用不支持 HTTP 2 的浏览器 即使我打开了 HTTP 2 Azure 应用服务是否会自动回退到这些浏览器的 HTTP 1 1 换句话说 当
  • 使用 JavaScript 关闭 Elementor 弹出窗口

    我有一个使用 Elementor 创建的弹出窗口 打开时会播放视频 我试图让它在视频结束后关闭 比如 90 秒 但我找不到如何使用 Javascript 关闭元素或弹出窗口 我尝试过这样的事情https github com element
  • 在“RKObjectManager”类型的对象上找不到属性“managementObjectStore”

    我一直在尝试使用 Restkit 库的 0 20 3 版本 最近发生了一个错误 我不知道如何解决 其内容如下 在该类型的对象上找不到属性 managementObjectStore RKObjectManager 它发生在包含 object
  • 如何使用 Xcode 4.3 或应用程序加载器将应用程序提交到 App Store

    我的第一个 iOS 应用程序在 iTunes Connect 中处于 等待上传 状态 但由于应用程序加载器中的 Xcode 4 3 遇到问题 我无法将其提交到 App Store 在 Xcode 4 3 中我有 3 个配置文件 临时配置文件
  • 右表中结果为空的内连接

    我有2张桌子 餐厅和订单 每个餐厅可以有很多订单 restaurants table id name orders table id restaurant id date 我需要找到在某个日期范围内没有订单的餐厅 在订单表中 我保存订单日期
  • 变量切换方向丢失

    我是安卓新手 我编写了几个程序并在手机上试用了它们 当我切换方向时 就像我的手机重新启动程序一样 我所有的变量都被重置 事实上 唯一没有重置的是编辑文本视图中的文本 这是什么原因造成的 我怎样才能阻止它 我尝试在谷歌和堆栈溢出上查看它 但我
  • CSS calc 在 Safari 和后备中不起作用

    我正在研究这个布局 它强烈依赖 CSS calc 来进行必要的计算 width webkit calc 50 20px width moz calc 50 20px width calc 50 20px 现在 我无法让它在 Safari 中
  • NHibernate、代理和平等

    我正在使用 NHibernate 3 3 1 并发现非常有趣的问题 在我的域模型中 我定义了两个类 Carriage 和 CarriageRequest 相互引用 因为延迟加载已打开 所以当我访问carriage CarriageReque
  • 在 .NET Core 中自动创建私钥、CSR 和最终签名证书的过程

    有人向我提供了中间证书 由根证书签名 及其密码 为了安全地连接到 SSL 端点 我需要提供签名证书 这是我所做的 创建私钥 使用该私钥创建 CSR 使用提供的中级证书对其进行签名 我使用 openssl 来完成这一切 它运行得非常完美 TL
  • 服务中的断点不起作用

    我正在尝试向在单独线程上运行的服务添加断点 无论我将断点放置在服务中的哪个位置 它们总是被忽略 我确信该服务正在运行 正如我所看到的Log e在日志猫中 我的调试模式也可以正确使用 因为应用程序主线程中的任何断点都可以工作 我错过了什么吗
  • 从 Django 内部调用时,Subprocess.Popen 与交互式程序一起挂起

    我编写了一个小型 Django 应用程序 它根据用户输入执行交互式程序并将输出作为结果返回 但由于某种原因 子进程挂起 在验证日志时 我发现必须给出 n 作为对挑战的响应的地方 该响应似乎从未做出过 有趣的是 如果我从 Django 外部运
  • Hibernate 锁定模式/锁定选项

    我正在浏览 Hibernate 文档并遇到了LockModes 这些是否与Isolation levels我们用于数据库 它们有何不同Isolation levels 我正在尝试一个简单的示例 并观察到当我使用 session load 方
  • 从 makefile 调用 flex

    我想调用 flex 来构建一个 l 文件 然后调用 gcc 来构建所有内容 I tryed comp lex scanner l gcc o a out main c hash c I error lex scanner l gcc o a
  • 如何开始黑莓编程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 编码文件路径

    net 中是否有内置方法可以像编码 url 一样对文件路径进行编码 例如 如果我的文件名中有非法字符 例如 whatever whatever 我希望它对 进行编码 这样它仍然存在 只是进行编码以便系统接受它 我想做类似的事情Path En
  • php,while()循环中的无限循环

    infinite loop x 1 while x 9 echo x x 我不明白背后的原因 为什么上面的代码会导致无限循环 在我看来 上面的代码应该输出 9 一次 但它输出无穷无尽的999999999 首先 当 x 等于 1 时 whil
  • Smack 的 FileTransferManager.createOutgoingFileTransfer 仅接受完整的 JID。如何在 Smack 中确定用户的完整 JID?

    经过几个小时的调试并试图找出为什么使用 aSmack 无法进行文件传输 而正常的消息传递却可以 我终于设法将其确定为这一点 当我按照 Smack 文档中给出的方法获取用户的名册列表时 Openfire 服务器发送的名册 JID 末尾缺少 C
  • 使用当前行值更新变量

    我正在尝试执行一项复杂的操作 其中我提取整列数据的总和 并从每行的总和中减去运行小计 我可以单独完成 Sum 和 Running Subtotal 的组成部分 用它来运行小计 sum UsageMetric over order by Ne
  • IE9、表格和显示:块

    对于我网站的低宽度移动版本 我切换了display某些的table tr td and th to block 让它们垂直堆叠 我使用此技术来允许宽表继续显示其所有内容 而不会溢出其容器之外 它在所有现代 5 种浏览器中都能完美运行 但在
  • 如何在 Android 中以最佳方式调整位图大小?

    假设我有一个六边形 如果我调整它的大小以在包含六边形网格的应用程序中使用它 bgPaint new Paint bgPaint setAntiAlias true bgPaint setDither true Bitmap coloredB