Android画布Canvas矩阵Matrix放大裁剪Rect区域的Bitmap,Kotlin

Android画布Canvas矩阵Matrix放大裁剪Rect区域的Bitmap,Kotlin

 

 

    private fun mydraw() {val originBmp = BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp = Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.ARGB_8888)val canvas = Canvas(newBmp)//把原图绘制在画布Canvas//canvas.drawBitmap(originBmp, 0f, 0f, null)canvas.drawColor(Color.LTGRAY)val paint = Paint(Paint.ANTI_ALIAS_FLAG)paint.color = Color.BLUEpaint.style = Paint.Style.STROKEpaint.strokeWidth = 30fval centerX = originBmp.width / 2val centerY = originBmp.height / 2val w = 300val h = 200val rect = Rect((centerX - w / 2), (centerY - h / 2), (centerX + w / 2), (centerY + h / 2))val rectF = RectF(rect.left.toFloat(), rect.top.toFloat(), rect.right.toFloat(), rect.bottom.toFloat())canvas.clipRect(rect) //选(裁剪)出一块区域。canvas.drawRect(rect, paint) //在这块区域边框绘制线。canvas.drawBitmap(originBmp, null, rect, null)iv1?.setImageURI(Uri.fromFile(saveBitmapToFile(newBmp)))canvas.drawBitmap(originBmp, rect, rectF, null)iv2?.setImageURI(Uri.fromFile(saveBitmapToFile(newBmp)))val factor = 1.8f //放大系数val matrix = Matrix()matrix.setScale(factor, factor)canvas.drawBitmap(originBmp, matrix, null)iv3?.setImageURI(Uri.fromFile(saveBitmapToFile(newBmp)))canvas.translate(centerX - factor * originBmp.width / 2, centerY - factor * originBmp.height / 2)canvas.drawBitmap(originBmp, matrix, null)iv4?.setImageURI(Uri.fromFile(saveBitmapToFile(newBmp)))}private fun saveBitmapToFile(bm: Bitmap): File? {var saveFile: File? = nullval savePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()if (!Files.exists(Paths.get(savePath))) {Log.d("保存文件", "${savePath}不存在!")} else {saveFile = File(savePath, System.currentTimeMillis().toString() + ".jpeg")try {val saveImgOut = FileOutputStream(saveFile)//压缩bm.compress(Bitmap.CompressFormat.JPEG, 90, saveImgOut)saveImgOut.flush()saveImgOut.close()Log.d("保存文件", "Bitmap保存至 ${saveFile.absoluteFile.toPath()}")} catch (e: Exception) {e.printStackTrace()}}return saveFile}

 

 

 

 

f01ff5004f4c4eb4a513d5f507d2f1bf.png

 

 

 

 

 

 

Android Matrix画布Canvas缩放scale,Kotlin-CSDN博客文章浏览阅读116次,点赞3次,收藏3次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :LinearLayoutCompat添加分割线divider_linearlayout 分割线-CSDN博客。https://blog.csdn.net/zhangphil/article/details/135114661

Android画布Canvas绘图scale & translate,Kotlin-CSDN博客文章浏览阅读457次,点赞4次,收藏11次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :LinearLayoutCompat添加分割线divider_linearlayout 分割线-CSDN博客。https://blog.csdn.net/zhangphil/article/details/134930229Android画布Canvas绘图scale,Kotlin-CSDN博客文章浏览阅读524次,点赞7次,收藏8次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :LinearLayoutCompat添加分割线divider_linearlayout 分割线-CSDN博客。https://blog.csdn.net/zhangphil/article/details/134832517Android画布Canvas绘制drawBitmap基于源Rect和目的Rect,Kotlin-CSDN博客文章浏览阅读1.3k次,点赞19次,收藏15次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :LinearLayoutCompat添加分割线divider_linearlayout 分割线-CSDN博客。https://blog.csdn.net/zhangphil/article/details/134818221

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型

目录 前言 AGI通用人工智能 总结 前言 AI零基础直播公开课,了解一下。 AGI通用人工智能 query chatmind.tech 找一下这篇论文,了解一下 E为编码器,D为解码器 所谓大模型也就是编码器-解码器。 模型里会有一些公式和参数,厉害的…

go 源码解读 sync.RWMutex

sync.RWMutex 简介源码结构RLockRUnlockUnlockgo 运行时方法 简介 简述sync包中读写锁的源码。 (go -version 1.21) 读写锁(RWMutex)是一种并发控制机制,用于在多个 goroutine 之间对共享资源进行读写操作。它提供了…

浅谈WPF之控件模板Control Template和数据模板Data Template

WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控…

C语言——数据类型

一、基本类型: 它们是构建其他数据类型的基础。 1、整型 用于表示整数。例如,int a 10; 整形中又有许多类型: 类型大小范围int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647unsigned int2 或 4 字节0 到 65,535 或…

【zookeeper分布式锁】

文章目录 1.Zookeeper 分布式锁实战 1.Zookeeper 分布式锁实战 1.1 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候,大家往往采用Synchronized(同步)或者其他同一个 JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开…

《MySQL系列-InnoDB引擎01》MySQL体系结构和存储引擎

文章目录 第一章 MySQL体系结构和存储引擎1 数据库和实例2 MySQL配置文件3 MySQL数据库路径4 MySQL体系结构5 MySQL存储引擎5.1 InnoDB存储引擎5.2 MyISAM存储引擎5.3 NDB存储引擎5.4 Memory存储引擎5.5 Archive存储引擎5.6 Federated存储引擎 6 连接MySQL6.1 TCP/IP6.2 命名管…

关于“Python”的核心知识点整理大全48

目录 world_population.py 16.2.5 制作世界地图 americas.py 16.2.6 在世界地图上呈现数字数据 na_populations.py 16.2.7 绘制完整的世界人口地图 world_population.py 16.2.8 根据人口数量将国家分组 world_population.py 16.2.9 使用 Pygal 设置世界地图的样式 w…

ubuntu快速搭建java开发环境/java1.8/idea2021.1.3/mysql/doceker

当设置Java开发环境时,确保先安装Java Development Kit (JDK) 8、IntelliJ IDEA 2021.1.3专业版、Maven、Git、MySQL和Docker。以下是Ubuntu上安装这些工具的基本步骤: 1. 安装Java Development Kit (JDK) 8: 首先,更新APT软件包…

Presentation Error:编程中的细节之战

Presentation Error:编程中的细节之战 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一起探讨在程序设计和编程中常见的问题之一…

PECL 到 LVPECL 的接口使用交流耦合或 3 电阻端接。采用交流耦合作热拔插时需注意防止因电容积累电荷放电导致器件损伤

交流耦合的必要性 PECL和LVPECL信号是差分信号,设计成具有一定的直流偏置电压。这种直流偏置电压在不同的设备或电路板之间可能会有所不同,直接连接可能导致直流偏置电平的冲突,从而损坏器件或影响信号完整性。交流耦合通过串联电容来隔离直流成分,只允许交流信号通过,从而…

web安全,常见的攻击以及如何防御

1、CSRF攻击 CSRF即Cross-site request forgery(跨站请求伪造) &#xff08;1&#xff09;为了防止这种攻击&#xff0c;表单一般都带有一个随机 token&#xff0c;告诉服务器这是真实请求。 <form action"your-bank.com/transfer" method"POST">&…

docker小白第九天

docker小白第九天 安装redis集群 cluster(集群)模式-docker版本&#xff0c;哈希槽分区进行亿级数据存储。如果1~2亿条数据需要缓存&#xff0c;请问如何设计这个存储案例。单机存储是不可能的&#xff0c;需要分布式存储&#xff0c;如果使用redis又该如何部署。 哈希取余分…

5-Docker实例-centos-nginx(3)

基于上次制作的centos-systemctl:1.0镜像,在其上安装nginx rpm,并构建nginx镜像。 1.制作nginx Dockerfile,并保存 命令: vim Dockerfile FROM centos-systemctl:1.0 MAINTAINER ztjCOPY nginx.repo /etc/yum.repos.d/ COPY epel.repo /etc/yum.repos.d/ COPY epel-tes…

数据结构——红黑树 and B-树

红黑树 根据平衡条件第4、5两点 最短路径&#xff0c;都是黑色 最长路径&#xff0c;红黑相间 最长是最短的两倍 B-树

Linux jed命令教程:如何有效地使用jed编辑器(附实例教程和注意事项)

Linux jed命令介绍 jed是一个可定制的文本编辑器&#xff0c;它在各种平台上都有应用&#xff0c;包括Linux、Windows、macOS等&#xff0c;但主要用于类Unix系统。jed特别适合用来编辑程序原始代码。 Linux jed命令适用的Linux版本 在Linux上&#xff0c;你的发行版的软件仓…

k8s-cni网络 10

Flannel vxlan模式跨主机通信原理 在同一个节点上的pod 流量通过cni网桥可以直接进行转发&#xff1b; 在需要跨主机访问时&#xff0c;数据包通过flannel(隧道) 知道另一边的mac地址&#xff0c;就可以拿到另一边的ip地址&#xff0c;然后构建常规的以太网数据包&#xff0c;…

QT+OSG/osgEarth编译之六十二:bsp+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ac)

目录 1、bsp介绍 2、文件分析 3、pro文件 4、编译实践 1、bsp介绍 BSP文件是使用Quake游戏引擎开发的游戏所使用的地图文件,它包含关卡地图的布局信息、对象和资源。许多著名的游戏都使用BSP地图文件,包括《雷神之锤》系列、《半条命》系列、《反恐精英》(CS)系列和《使…

HTML中img图片进行等比例缩放的实例代码

img图片等比例缩放的方法 HTML中&#xff0c;要修改img元素定义的图片的大小&#xff0c;且是等比例缩放&#xff0c;不改变宽和高的比值&#xff0c;那么可以采用只设置img元素属性中width和height中的任何一个&#xff0c;不要同时设置两个即可实现img图片的等比例缩放效果。…

泛目录是干什么用的蚂蚁seo泛程序

泛目录是干什么用的蚂蚁seo泛程序目录 泛目录是一种常见的网站优化方法&#xff0c;属于黑帽技术的一种。它的核心原理是利用高权重的网站继承目录&#xff0c;然后快速获得收录与排名。这种方法可以帮助网站在搜索引擎中获得更好的排名&#xff0c;从而吸引更多的流量。 泛目…

python字符串编码解码基础知识

python字符串编码解码基础知识 python通过ord©获取字符c的unicode的编码值&#xff0c;为整数。通过chr(i)获取i对应的unicode的字符。通过str.encode()将字符串编码为原始字节&#xff0c;b.decode()将原始字节解码为字符串。 1 字符串基础知识 python通过ord©获…