当前位置: 首页 > news >正文

Android Matrix的使用详解(通过矩阵获取到图片缩放比例和角度)

网上查了好久相关的资料,都没有明确的答案。最终通过多次测试结果,结合安卓定义的矩阵含义,推算出来矩阵的数学含义以及相关的计算公式

1.获取Matrix矩阵:

Matrix matrix = new Matrix(); 
float[] matrixValues = new float[9];
matrix.getValues(matrixValues);

2.通过矩阵计算图片旋转角度:

float rotationRadians = Math.atan2(matrixValues[Matrix.MSKEW_Y], matrixValues[Matrix.MSCALE_Y]); 
float rotationDegrees = (float) Math.toDegrees(rotationRadians);

3.通过矩阵计算图片缩放比例:

float scaleX = (float) Math.sqrt(matrixValues[Matrix.MSCALE_X] * matrixValues[Matrix.MSCALE_X] + matrixValues[Matrix.MSKEW_X] * matrixValues[Matrix.MSKEW_X]);
float scaleY = (float) Math.sqrt(matrixValues[Matrix.MSKEW_Y] * matrixValues[Matrix.MSKEW_Y] + matrixValues[Matrix.MSCALE_Y] * matrixValues[Matrix.MSCALE_Y]);

4.原理

矩阵含义:

scaleX * cosθ   -scaleX * sinθ   0

scaleY * sinθ     scaleY * cosθ   0

0                       0                       1

相关文章:

Android Matrix的使用详解(通过矩阵获取到图片缩放比例和角度)

网上查了好久相关的资料,都没有明确的答案。最终通过多次测试结果,结合安卓定义的矩阵含义,推算出来矩阵的数学含义以及相关的计算公式 1.获取Matrix矩阵: Matrix matrix new Matrix(); float[] matrixValues new float[9]; …...

【Spring】bean的生命周期

这里写目录标题 1. 在类中提供生命周期控制方法,并在配置文件中配置init-method&destroy-method(配置)关闭容器操作1:ctx.close()关闭容器操作2:关闭钩子:ctx.registerShutdownHook() 2. 实现接口来做和…...

C#运算符重载

运算符重载允许你重新定义内置运算符(如、-、*等)的行为,以便它们可以用于自定义类型(类/结构体)。通过运算符重载,你可以为自定义类型创建更直观和灵活的操作。 在C#中,可以重载的运算符如下&…...

【L2GD】: 无环局部梯度下降

文章链接:Federated Learning of a Mixture of Global and Local Models 发表期刊(会议): ICLR 2021 Conference(机器学习顶会) 往期博客:FLMix: 联邦学习新范式——局部和全局的结合 目录 1.背景介绍2. …...

2023-11-14 LeetCode每日一题(阈值距离内邻居最少的城市)

2023-11-14每日一题 一、题目编号 1334. 阈值距离内邻居最少的城市二、题目链接 点击跳转到题目位置 三、题目描述 有 n 个城市,按从 0 到 n-1 编号。给你一个边数组 edges,其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的…...

AdServices归因和iAd归因集成

AdServices framework 是 Apple 专门为 ASA 提供的归因框架 。尤其在ATT 政策推出以后,app 获取用户 IDFA 的比例大幅降低,传统的依靠IDFA 的方法也无法准确归因。 但是 Apple 为 ASA 开了一个后门,其他广告渠道无法获取用户的 IDFA 作为身份…...

关于 内部类 你了解多少?(详解!!)

目录 1. 什么是内部类? 2. 内部类的分类 3. 内部类 3.1 实例内部类 3.2 静态内部类 4. 局部内部类 5. 匿名内部类 6.对象的打印 “不积跬步无以至千里,不积小流无以成江海。”每天坚持学习,哪怕是一点点!!&a…...

CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]

文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…...

如何在Docker部署Draw.io绘图工具并远程访问

文章目录 前言1. 使用Docker本地部署Drawio2. 安装cpolar内网穿透工具3. 配置Draw.io公网访问地址4. 公网远程访问Draw.io 前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费&#xff0…...

Android APK打包的过程主要步骤

Android APK打包的过程可以概括为以下几个主要步骤: 编译源代码:将开发好的Java源代码编译成Dalvik字节码文件(.dex文件),Android安卓该文件包含了Android平台上的运行程序的指令集。打包资源文件:将应用程…...

吃透 Spring 系列—MVC部分

目录 ◆ SpringMVC简介 - SpringMVC概述 - SpringMVC快速入门 - Controller中访问容器中的Bean - SpringMVC关键组件浅析 ◆ SpringMVC的请求处理 - 请求映射路径的配置 - 请求数据的接收 - Javaweb常用对象获取 - 请求静态资源 - 注解驱动 标签 ◆ SpringMV…...

Java面试题(每天10题)-------连载(32)

目录 设计模式篇 1、工厂方法模式(利用创建同一接口的不同实例): 2、抽象工厂模式(多个工厂) 3、单例模式(保证对象只有一个实例) 4、原型模式(对一个原型进行复制、克隆产生类…...

HDP集群Kafka开启SASLPLAINTEXT安全认证

hdp页面修改kafka配置 java代码连接kafka增加对应的认证信息 props.put("security.protocol","SASL_PLAINTEXT");props.put("sasl.mechanism","PLAIN");props.put("sasl.jaas.config","org.apache.kafka.common.securi…...

判断上颌下颌的stl模型坐标轴是否正常

文章目录 研究方向:如何判断?又如何纠正?如何判断?Demo实现:先判断一个遍历相关文件夹下的所有病例如何纠正?Demo相关知识点研究方向:如何判断?又如何纠正? 如何判断? 当然,我们不能以坐标的正负来判断 我们看到这个Bounding Box里面有stl模型的xyz三轴方向的最大值与最…...

C/C++---------------LeetCode第1189. “气球” 的最大数量

气球的最大数量 题目及要求统计法在main内使用 题目及要求 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “ba…...

Arthas(阿尔萨斯)--(三)

目录 一、Arthas学习 1、class/classloader相关命令一 1、sc 2、sm 2、class/classloader相关命令二 1、jad 2、mc 3、redefine 三、class/classloader相关命令三 一、Arthas学习 Arthas(阿尔萨斯)--(一) Arthas(阿尔萨斯)--(二) 1、class/classloader相关命令一 …...

《变形监测与数据处理》笔记/期末复习资料(择期补充更新)

变形: 变形是物体在外来因素作用下产生的形状、大小及位置的变化(随时间域和空间域的变化),它是自然界普遍存在的现象。 变形体: 一般包括工程建筑物、构筑物、大型机械设备以及其他自然和人工对象等。 变形体和变形…...

Linux:进程替换和知识整合

文章目录 进程程序替换替换原理进程替换的理解 环境变量与进程替换命令行解释器实现逻辑 进程程序替换 前面已经学习了子进程的创建,但是子进程的创建不管怎么说,都是父进程代码的一部分,那么实际上如果想要子进程执行新的程序呢&#xff1f…...

React组件在什么情况下会重新渲染

当我们使用React编写组件时,组件的重新渲染是一个重要的概念。重新渲染是指React组件在特定情况下会重新执行其渲染函数,更新用户界面以反映最新的数据。很多情况下,组件不必要的重新渲染会严重影响性能,所以要充分了解触发组件重…...

云ES容灾方案

一、ES集群可用性容灾 1.1 云ES集群可用性容灾(使用跨可用区实例) 云ES集群部署在三个可用区,单可用区故障,云ES集群依然可能对外提供服务;两个可用区故障,需要进行控制台切流(集群会自动切的选择主节点) 应用服务部署在二个可用区,单可用区故障,依然可对提供服务1.2 …...

5分钟搞懂线结构光三维重建:从激光平面到深度信息的完整流程

线结构光三维重建:从激光平面到深度信息的实战解析 当你第一次看到激光线扫过物体表面时,可能不会想到这条细细的光线背后隐藏着精确测量物体三维形状的能力。线结构光三维重建技术正悄然改变着工业检测、逆向工程和医疗影像等领域——它不需要接触物体…...

【仅限头部金融科技团队内部流通】FastAPI 2.0 AI流式响应安全加固方案:防内存溢出、防连接耗尽、防Token泄露(含OWASP ASVS v4.0合规对照表)

第一章:FastAPI 2.0 AI流式响应安全加固方案全景概览FastAPI 2.0 引入了对 Server-Sent Events(SSE)与异步生成器的原生增强支持,使大语言模型(LLM)的流式响应(如 token-by-token 输出&#xff…...

M2LOrder 情绪识别模型 Python 入门实战:快速搭建情感分析 WebUI

M2LOrder 情绪识别模型 Python 入门实战:快速搭建情感分析 WebUI 你是不是经常好奇,一段文字背后藏着怎样的情绪?是喜悦、愤怒,还是悲伤?以前,这可能需要专业的心理学知识去揣摩。但现在,借助A…...

战争鼓点响起:AI生成大片感战斗音乐作品

战争鼓点响起:AI生成大片感战斗音乐作品 1. 从文字到战歌:AI音乐生成初体验 想象一下这样的场景:你正在制作一部史诗级的战斗短片,画面中千军万马奔腾,刀光剑影交错,但总觉得缺少点什么。没错&#xff0c…...

LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤

LFM2.5-1.2B-Thinking-GGUF部署教程:Ubuntu/CentOS/Debian三平台通用安装步骤 1. 平台简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,特别适合在资源有限的环境中快速部署。该镜像内置了GGUF模型文件和llama.cpp运行时&#xff…...

开源可部署!PyTorch 2.8 RTX 4090D镜像在企业AIGC生产环境落地实践

开源可部署!PyTorch 2.8 RTX 4090D镜像在企业AIGC生产环境落地实践 1. 为什么选择这个深度学习镜像 在当今AI技术快速发展的背景下,企业面临的最大挑战之一是如何快速搭建稳定高效的AI开发环境。传统方式需要手动配置CUDA、PyTorch和各种依赖库&#x…...

Self Service Password与LDAP集成实战:从部署到问题排查

1. Self Service Password与LDAP集成概述 自助密码重置功能已经成为企业IT基础设施中不可或缺的一部分。想象一下,当员工在深夜加班时忘记密码,又找不到IT支持人员,这种场景下的自助解决方案就显得尤为重要。Self Service Password&#xff0…...

Nuxt3 + PM2 + Nginx:打造高可用前端部署方案(附常见问题排查指南)

Nuxt3 PM2 Nginx:打造高可用前端部署方案(附常见问题排查指南) 在当今快速迭代的Web开发领域,Nuxt3凭借其出色的服务端渲染能力和现代化的开发体验,正成为越来越多技术团队的首选框架。然而,将Nuxt3应用部…...

昆明理工大学材料科学与工程考研复试资料|F001现代材料测试技术专项复习包|电子版

温馨提示:文末有联系方式一、昆明理工大学材料科学与工程专业复试资料全面升级 专为报考昆明理工大学材料科学与工程学院硕士研究生设计,深度对标最新复试大纲,系统梳理核心考核模块,助力考生精准把握复试命方向与评分标准。二、F…...

音乐版权侵权避坑指南:明星翻唱踩的红线,这些行为也在踩

短视频/直播/门店公播全场景合规方案 正版商用音乐授权平台推荐央广网北京3月30日消息(记者费权)近日,歌手单依纯在深圳演唱会上未经授权演唱李荣浩原创作品《李白》,而此前李荣浩方已明确婉拒其版权授权申请,中国音乐…...