如何获取任意矩阵的缩放值?

2024-03-21

图像按矩阵缩放:

Matrix matrix = new Matrix();
matrix.postScale(...);
matrix.postTranslate(...);
matrix.postRotate(...);
...

我希望缩放后的图像不会小于原始图像的一半,因此总缩放不应小于0.5。

但如何做到这一点呢?我试图获取要检查的矩阵的第一个值:

float pendingZoom = 0.6f;

float[] values = new float[9];
Matrix.getValues(values);
float scalex = values[Matrix.MSCALE_X];

Then:

if(scalex<0.5) {
    pendingZoom = pendingZoom * (0.5f / scalex);
}

不幸的是,它有时不起作用。如果图像已旋转,则scalex可能为负值,则pendingZoom也会是负值。

如何正确地做到这一点?


UPDATE

我刚刚找到了values[Matrix.MSCALE_X]不是可靠的缩放值。我用它来计算矩形的新宽度,这是不正确的。

相反,我尝试通过矩阵映射两个点,并计算两个距离:

PointF newP1 = mapPoint(matrix, new PointF(0, 0));
PointF newP2 = mapPoint(matrix, new PointF(width, 0));
float scale = calcDistance(newP1, newP2) / width;

我能得到正确的scale现在值。但我不确定这是否是最好的解决方案。


    float scalex = values[Matrix.MSCALE_X];
    float skewy = values[Matrix.MSKEW_Y];
    float scale = (float) Math.sqrt(scalex * scalex + skewy * skewy);

该解决方案看起来更简单,但我认为您的解决方案更加清晰,并且几乎与此解决方案一样快。

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

如何获取任意矩阵的缩放值? 的相关文章

  • Xamarin 分步向导 Android 视图

    我想在 Xamarin c 中构建一个 android 活动 用于逐步注册和 或信息 我怎样才能做这样的事情 谁能给我一个代码示例或其他东西 谢谢 基本上你需要使用一个名为 a 的元素ViewPager 并且每个页面都会不同Fragment
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • Android 中使用黑白 alpha 蒙版的高效位图蒙版

    我想用黑白 alpha 蒙版来掩盖位图 我的蒙版图像是黑白的 黑色区域意味着透明 白色区域意味着不透明 我需要的是 当我使用此蒙版图像来蒙版任何其他图像时 如果蒙版图像的相应区域为黑色 则生成的图像区域应为透明 否则 生成的图像区域应该是不
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • 如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息通知?

    我从新的 Google 通知服务开始 Firebase Cloud Messaging 感谢这段代码https github com firebase quickstart android tree master messaging htt
  • CoordinatorLayout 和 ImageView 在滚动时调整宽度的问题

    我正在尝试放置一个ImageView in a CollapsingToolbarLayout它在加载时占据整个屏幕 并且当您滚动内容时 16x9 分辨率图像宽度会调整大小 直到图像占据屏幕的整个宽度 那时 我希望图像具有视差app lay
  • 多 AVL 树旋转

    假设我有一个无序集合 s 3 6 5 1 2 4 并且我需要构造一个 AVL 树 就这么多了 我了解基本的旋转 我在这里达到这一点 5 2 6 1 3 但当我尝试插入 4 时 一切都崩溃了 我得到的最终答案是 左边的 4 But the a
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 模拟器无法加载

    我正在使用 hello android 教程并通过 eclipse 创建 avd 启动模拟器时不使用图像 它只是显示一个黑色的后屏 中间有 ANDROID 字样 并且在 ANDROID 字样的末尾有一个闪烁的光标 我已按照 T 的步骤安装
  • Android 操作项上的通知徽章

    我想在操作栏中放置的购物车图像上添加一个通知徽章 并以编程方式操作它 有帮助吗 您可以显示自定义MenuItem on ActionBar通过创建一个custom layout for MenuItem 要设置自定义布局 您必须使用菜单项属
  • 活动加载缓慢

    我的应用程序中有大约 50 个活动 但其中一个活动非常慢 我的意思是当我按下按钮进入该活动时 需要很长时间 有时会出现黑屏 在该活动中 我有一个按钮 如果我单击该按钮 则需要很长时间才能执行 代码很轻 只有一个Button EditText
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆
  • TextView.setMaxLines 不起作用?

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

    我有一个多项目 10 个模块 每次构建大约需要 20 30 秒 当我在 Android Studio 中按 运行 时 每次都必须等待才能重建应用程序 这非常慢 是否可以在 Android Studio 中自动化构建过程 或者您对如何加快此过
  • onPrepareOptionsMenu 复制 ActionBar 中的项目

    当我使用 onPrepareOptionsMenu 添加菜单项时 该菜单项会在操作栏中复制其自身 我正在使用片段并在主要活动的 ActionBar 中创建初始菜单 如下所示 Override public boolean onCreateO
  • 无法在 Document-Term-Matrix 中看到 `RTextTools::toLower()` 文本的结果

    我尝试创建一个矩阵 为此我想降低文本 为此 我使用此 R 指令 matrix create matrix tweets 1 toLower TRUE language english removeStopwords FALSE remove
  • TabLayout 的不同 tabMode

    我正在使用 ViewPager 和 TabLayout 如果选项卡可以放置在显示 tabMode 上 则它们必须是 app tabMode fixed else app tabMode scrollable 我怎样才能做到这一点 我不明白你
  • Android AppWidgetManager 方法 updateAppWidget 无法设置意图、加载数据。而且它是随机发生的

    我的小部件由 2 个按钮和一个显示数据的列表视图组成 大多数时候 当调用小部件提供程序的 onUpdate 方法时 一切都会正常加载 每个人都很高兴 但是我注意到有时在调用更新方法后 小部件完全无法加载其数据 列表视图为空 所有按钮均无响应
  • 如何用LoaderManager自动重新查询

    我有一个应用程序显示来自 SQLite DB 的数据 并且数据不断变化 所以显然 我认为我应该使用 LoaderManager 来显示数据 我读过一些关于将 LoaderManager 与 SQLite 结合使用的内容 然后看到了亚历克斯

随机推荐

  • 真正的缩放是什么?

    我听说人们说他们已经制作了一个可扩展的 Web 应用程序 真正的缩放是什么 开发人员可以采取哪些措施来使其应用程序具有可扩展性 开发人员在扩展过程中会考虑哪些因素 有关使用 ASP NET 和 SQL Server 扩展 Web 应用程序的
  • 回购协议中的 TWIG 查询生成器

    我尝试将其放入referralentity php public function getTotalReferrals qb this gt createQueryBuilder r qb gt select COUNT r id AS t
  • 将语言名称转换为区域设置代码

    PHP 中是否有规范的方法来执行此操作 Java 问题 区域设置 语言名称到国家 语言代码 https stackoverflow com questions 20518000 locale language name to country
  • Android Studio:多模块项目中外部 JAR 的链接

    我有一个 Android 应用程序 在 Android Studio 上运行 它由 2 个模块组成 有一个低级纯java模块 我们称之为模块A 在它的顶部 有模块 B 它是 Android 应用程序 它依赖于 moduleA 来进行某些处理
  • 使用 PyParsing 解析 Snort 日志

    使用 pyparsing 模块解析 Snort 日志时遇到问题 问题在于分离 Snort 日志 它有多行条目 由空行分隔 并让 pyparsing 将每个条目解析为一个整体块 而不是逐行读取并期望语法适用于每一行 显然 它不是 我尝试将每个
  • 谷歌地图只显示半屏?

    谷歌地图只显示一半的屏幕 我尝试通过调整大小来修复 google maps event trigger map resize 但没有任何运气 有人可以帮忙吗 当它加载时 它只显示一半的屏幕 如下所示 我找啊找啊 没有任何解决办法 funct
  • 使用 AWS CLI 命令添加 SQS 重新驱动策略

    我尝试使用下面的 AWS CLI 命令设置 SQS 的重新驱动策略 但看到与重新驱动 JSON 相关的错误 您能让我知道如何解决这个问题吗 redrive policy RedrivePolicy deadLetterTargetArn d
  • 如何在Android Studio 2020中找到R文件?

    我在这里搜索了如何做到这一点 但我找到了 2015 年的源代码 并且 Android Studio 的布局从那时起就发生了变化 Android Studio 中的 R 文件在哪里 在此输入图像描述 https i stack imgur c
  • 缺少适用于 Windows 的远程 iOS 模拟器选项? [复制]

    这个问题在这里已经有答案了 我一直在使用适用于 Windows 的 Xamarin Remote iOS Simulator 和 Visual Studio Professional 版本 更新到最新版本的 Xamarin for Visu
  • 如何对 ksh 中的变量进行精确的单词匹配?

    我使用以下语法作为 ksh 脚本的一部分来验证该词是否Validation存在于LINE FROM FILE LINE FROM FILE Validation LINE FROM FILE print match Validation 这
  • 反应本机导航给出错误“未定义不是对象”?

    import Platform from react native import Navigation from react native navigation import registerScreens from screens reg
  • 使用扩展运算符和打字进行解构

    我有这个对象 const ABCD a 1 b 2 c 3 d 4 我可以对其进行解构 使用 扩展 运算符收集其余部分 然后输入如下变量 const a b restOfIt a number b number ABCD 但我该如何输入re
  • GitHub 如何在不重新加载页面的情况下更改 URL?

    转到任意 GitHubpage https github com twitter bootstrap单击任意目录 文件 观察 URL 如何变化 但仅更新部分页面 没有整个页面重新加载 我如何使用 jQuery 做类似的事情 这适用于大多数浏
  • 如何在 Python 中将 JSON 字符串转换为字典?

    我已经阅读了有关从 str 到 dic 的 python 转换的不同帖子 但我仍然遇到问题 并且无法在字典中转换我的 str 这是我原来的字符串 faqId 1 isPrivate false question Question 1 ans
  • WCF 绑定配置仅作为默认值应用,但命名失败

    WCF 绑定和流传输模式有一个有趣的问题 我们无法解决 我们有一个配置为流传输模式的 WCF 端点 端点接收到的消息比默认大小 65 KB 大得多 因此 我们在绑定标记的 maxReceivedMessageSize 属性中指定了更大的消息
  • 什么是“分段错误(核心转储)”? [复制]

    这个问题在这里已经有答案了 我正在尝试在 Linux 中编写一个具有 sqrt 参数的 C 程序 代码如下 include
  • 更改 Javascript 警报的标题 [重复]

    这个问题在这里已经有答案了 如何更改 javascript 警报弹出窗口的标题 你不能 https developer mozilla org en US docs DOM window alert 这是由浏览器决定的 为了用户的安全 例如
  • 小吃店不显示

    我继承自BaseActivity对于所有其他活动 public class BaseActivity extends AppCompatActivity public static CoordinatorLayout coordinator
  • Mysql:一般错误:1366 字符串值不正确

    今天 我在开发基于 PHP MySql 和 Zend Framework 的应用程序时遇到错误 此外 我正在使用phpseclib http phpseclib sourceforge net 使用加密数据AES算法 http en wik
  • 如何获取任意矩阵的缩放值?

    图像按矩阵缩放 Matrix matrix new Matrix matrix postScale matrix postTranslate matrix postRotate 我希望缩放后的图像不会小于原始图像的一半 因此总缩放不应小于0