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

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin


import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.RectF
import android.os.Bundle
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.toRectclass MainActivity : AppCompatActivity() {private var mScaleFactor = 16f //值越大,马赛克效果越强。private var mSrcBmp: Bitmap? = nullprivate val mResId = R.mipmap.picprivate var mSrcBmpW = 0private var mSrcBmpH = 0override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val image1 = findViewById<ImageView>(R.id.image1)val image2 = findViewById<ImageView>(R.id.image2)mSrcBmp = BitmapFactory.decodeResource(resources, mResId, null)mSrcBmpW = mSrcBmp!!.widthmSrcBmpH = mSrcBmp!!.heightval smallBmp = getSmallBmp(mSrcBmp!!)image1.setImageBitmap(Bitmap.createScaledBitmap(smallBmp, mSrcBmpW, mSrcBmpH, true))image2.setImageBitmap(getScaleBmp(smallBmp))}private fun getSmallBmp(srcBmp: Bitmap): Bitmap {return Bitmap.createScaledBitmap(srcBmp, (mSrcBmpW / mScaleFactor).toInt(), (mSrcBmpH / mScaleFactor).toInt(), true)}private fun getScaleBmp(srcBmp: Bitmap): Bitmap {//空Bitmapval dstBmp = Bitmap.createBitmap(mSrcBmpW, mSrcBmpH, Bitmap.Config.ARGB_8888)val srcRectF = RectF(0f, 0f, srcBmp.width.toFloat(), srcBmp.height.toFloat())val dstRectF = RectF(0f, 0f, mSrcBmpW.toFloat(), mSrcBmpH.toFloat())val c = Canvas(dstBmp)c.drawBitmap(srcBmp, srcRectF.toRect(), dstRectF.toRect(), null)return dstBmp}
}

自上往下,第一张是原图,第二张是通过

    public static Bitmap createScaledBitmap(@NonNull Bitmap src, int dstWidth, int dstHeight,boolean filter)

先把原图缩小1/n,然后再放大到原图等同大小,实现马赛克,发现这种方式生成的Bitmap,肯定可以达到马赛克效果,并基本接近高斯模糊效果。

第三张图是通过Canvas的

    public void drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,@Nullable Paint paint)

基于RectF放大小图到原图大小,发现马赛克的颗粒度更大,更具备马赛克典型特征。

总结起来,

    public static Bitmap createScaledBitmap(@NonNull Bitmap src, int dstWidth, int dstHeight,boolean filter)

生成的图更平滑。

这种方式生成的图:

    public void drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,@Nullable Paint paint) 

尤其是放大情况下,拉伸的跨越明显,更具大颗粒度的马赛克效果。

Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)-CSDN博客文章浏览阅读753次,点赞5次,收藏10次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。Android BitmapShader简洁实现马赛克,Kotlin(一)-CSDN博客。 https://zhangphil.blog.csdn.net/article/details/145322436

相关文章:

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin

Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊&#xff08;毛玻璃&#xff09;对比&#xff0c;Kotlin import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.RectF …...

ThinkPad E480安装Ubuntu 18.04无线网卡驱动

个人博客地址&#xff1a;ThinkPad E480安装Ubuntu 18.04无线网卡驱动 | 一张假钞的真实世界 遗憾的是虽然下面的方法可以解决&#xff0c;但是内核升级后需要重新安装。 基本信息 Ubuntu 18.04ThinkPad E480使用下面的命令查看 Linux 内核&#xff1a; $ uname -r 5.0.0-3…...

自然语言处理——从原理、经典模型到应用

1. 概述 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一门借助计算机技术研究人类语言的科学&#xff0c;是人工智能领域的一个分支&#xff0c;旨在让计算机理解、生成和处理人类语言。其核心任务是将非结构化的自然语言转换为机器可以…...

Ollama 运行从 ModelScope 下载的 GGUF 格式的模型

本文系统环境 Windows 10 Ollama 0.5.7 Ollama 是什么&#xff1f; Ollama 可以让你快速集成和部署本地 AI 模型。它支持各种不同的 AI 模型&#xff0c;并允许用户通过简单的 API 进行调用 Ollama 的安装 Ollama 官网 有其下载及安装方法&#xff0c;非常简便 但如果希…...

Haproxy介绍及学习

一、负载均衡(load balance)&#xff1a; 1.一种服务基于硬件设备实现的高可用反向代理技术&#xff0c;将特定的业务分担给指定的一个或者多个后端特定的服务器&#xff0c;提高了业务的并发处理能力保证业务的高可用并方便对业务后期的水平动态扩展性。 2.使用负载均衡的原因…...

【2024年华为OD机试】 (C卷,200分)- 贪心歌手(JavaScriptJava PythonC/C++)

一、问题描述 问题描述 一个歌手需要从A城前往B城参加演出&#xff0c;必须在T天内到达。途中会经过N座城市&#xff0c;且不能往回走。每两座城市之间的行程天数已知。歌手在每座城市都可以卖唱赚钱&#xff0c;但收入会随着停留天数的增加而递减。具体来说&#xff0c;第一…...

深度学习在金融风控中的应用:突破传统模型的瓶颈

深度学习在金融风控中的应用:突破传统模型的瓶颈 金融风险控制(简称“风控”)是现代金融体系中至关重要的一环,关系到金融机构的稳定性、客户的安全以及整体经济的健康运行。近年来,随着深度学习的迅猛发展,传统的风控模型正面临被颠覆的挑战,新的技术手段和思维方式正…...

LLM - 大模型 ScallingLaws 的指导模型设计与实验环境(PLM) 教程(4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145323420 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...

hunyuan 混元学习

使用了5个subset,也是用了text-image和text-video进行训练的 也是进行了复杂的视频选择。同movie gen. 也进行了模型切断&#xff0c;用拉普拉斯算子找到最清晰的一帧作为训练的起始 训练了不同的模型去选择数据&#xff0c;比如用Dover去选择美观度比较好的数据&#xff0c…...

开发、科研工具汇总

一些基础教程网站 W3&#xff1a;w3school 在线教程 菜鸟&#xff1a;菜鸟教程 - 学的不仅是技术&#xff0c;更是梦想&#xff01; 开发相关参考文档 Vue2&#xff1a;Vue.js Vue3&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js MDN&#xff1a;MDN Web Docs HT…...

项目部署(springboot项目)

1、安装Nginx&#xff0c;并开启 2、前端项目打包&#xff1a;npm run build:prod--->dist 3、后端项目打包&#xff1a;install--->xxx.jar 4、开放需要的端口号&#xff1a;比如我的后端项目端口号为8282&#xff0c;则需要防火墙和服务器同时开发8282端口 5、将di…...

OpenEuler学习笔记(十四):在OpenEuler上搭建.NET运行环境

一、在OpenEuler上搭建.NET运行环境 基于包管理器安装 添加Microsoft软件源&#xff1a;运行命令sudo rpm -Uvh https://packages.microsoft.com/config/centos/8/packages-microsoft-prod.rpm&#xff0c;将Microsoft软件源添加到系统中&#xff0c;以便后续能够从该源安装.…...

神经网络的通俗介绍

人工神经网络&#xff0c;是一种模仿人类大脑工作原理的数学模型。人类的大脑是由无数的小“工作站”组成的&#xff0c;每个工作站叫做“神经元”。这些神经元通过“电线”互相连接&#xff0c;负责接收、处理和传递信息。 一、人类大脑神经网络 人类大脑的神经网络大概长这…...

基于 AWS SageMaker 对 DeepSeek-R1-Distilled-Llama-8B 模型的精调与实践

在当今人工智能蓬勃发展的时代&#xff0c;语言模型的性能优化和定制化成为研究与应用的关键方向。本文聚焦于 AWS SageMaker 平台上对 DeepSeek-R1-Distilled-Llama-8B 模型的精调实践&#xff0c;详细探讨这一过程中的技术细节、操作步骤以及实践价值。 一、实验背景与目标 …...

如何使用DeepSeek R1

以下是如何使用DeepSeek R1的详细步骤&#xff1a; ### 一、注册DeepSeek账户 1. **访问官方网站**&#xff1a; - 打开浏览器&#xff0c;访问[chat.deepseek.com](http://chat.deepseek.com)。 2. **注册账户**&#xff1a; - 使用电子邮件、Google账户或86手机号码…...

大屏 UI 设计风格的未来趋势

在科技飞速革新的时代&#xff0c;大屏设备的应用领域不断拓展&#xff0c;从城市的智能交通指挥中心&#xff0c;到商场的互动广告大屏&#xff0c;再到家庭的超大尺寸智能电视&#xff0c;大屏已然成为信息展示与交互的关键载体。大屏 UI 设计风格也随之不断演变&#xff0c;…...

unity学习22:Application类其他功能

目录 1 是否允许后台运行 1.1 Application.runInBackground&#xff0c;显示是否允许后台运行 1.2 设置的地方 2 打开URL 2.1 Application.OpenURL("") 打开超链接 3 退出游戏 3.1 Application.Quit() 退出游戏 4 场景相关 5 返回游戏状态 6 控制游戏的行…...

51单片机入门_02_C语言基础0102

C语言基础部分可以参考我之前写的专栏C语言基础入门48篇 以及《从入门到就业C全栈班》中的C语言部分&#xff0c;本篇将会结合51单片机讲差异部分。 课程主要按照以下目录进行介绍。 文章目录 1. 进制转换2. C语言简介3. C语言中基本数据类型4. 标识符与关键字5. 变量与常量6.…...

定位的叠放次序 z-index

浮动定位和绝对定位的区别&#xff1a; 浮动只会压住它下面标准流的盒子&#xff0c;但是不会压住下面标准流盒子里面的文字&#xff0c;但是绝对定位&#xff08;固定定位&#xff09;会压住下面标准流所有的内容。...

ESP32-S3模组上跑通esp32-camera(36)

接前一篇文章:ESP32-S3模组上跑通esp32-camera(35) 一、OV5640初始化 2. 相机初始化及图像传感器配置 上一回继续对reset函数的后一段代码进行解析。为了便于理解和回顾,再次贴出reset函数源码,在components\esp32-camera\sensors\ov5640.c中,如下: static int reset…...

基于STM32G474高精度定时器HRTIM的高频开关电源移相控制实现

1. STM32G474的HRTIM为何是高频电源设计的利器 第一次接触STM32G474的高精度定时器HRTIM时&#xff0c;我正被DSP28335的分辨率问题困扰。当时做的1MHz开关电源项目&#xff0c;150MHz主频的DSP每个时钟周期只能提供150个计数点&#xff0c;调节精度捉襟见肘。直到发现HRTIM的5…...

政府新媒体宣发审核和监测对内容合规有哪些意义

在政务新媒体全谱系发展的今天&#xff0c;信息发布面临着意识形态安全、法律合规、公民隐私保护等多重考验。建立完善的宣发审核与监测机制&#xff0c;对保障内容合规具有决定性的意义&#xff0c;它是数字政府建设中不可或缺的“安全阀”与“过滤器”。以下是宣发审核和监测…...

终极Vue 3日期时间选择器:如何构建企业级日期处理解决方案

终极Vue 3日期时间选择器&#xff1a;如何构建企业级日期处理解决方案 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker Vue3-DateTime-Picker是一个基于Vue 3 Composition …...

树莓派网络配置全攻略:从有线到无线,新手到进阶

1. 项目概述&#xff1a;为什么网络配置是树莓派的第一课刚拿到一块崭新的树莓派&#xff0c;看着它小巧的主板和闪烁的指示灯&#xff0c;你脑子里想的可能是立刻跑个酷炫的Python项目&#xff0c;或者搭建一个家庭媒体中心。但别急&#xff0c;在这一切开始之前&#xff0c;有…...

控制理论实践:从PID到MPC的Python实现与仿真调试

1. 项目概述&#xff1a;从“Gonzo”看控制理论在开源项目中的实践最近在GitHub上看到一个挺有意思的项目&#xff0c;名字叫“control-theory/gonzo”。光看这个标题&#xff0c;你可能会有点摸不着头脑——“控制理论”和“Gonzo”有什么关系&#xff1f;Gonzo这个词&#xf…...

全栈代码资源聚合库:开发者如何高效利用开源代码示例提升工程能力

1. 项目概述&#xff1a;一个面向开发者的全栈代码资源聚合库最近在GitHub上看到一个挺有意思的项目&#xff0c;叫wuwangzhang1216/claude-code-source-all-in-one。光看这个名字&#xff0c;你大概能猜到这是个什么——没错&#xff0c;这是一个围绕“代码”和“源代码”做文…...

终极iOS弹窗解决方案SDCAlertView:10个强大功能超越系统UIAlertController

终极iOS弹窗解决方案SDCAlertView&#xff1a;10个强大功能超越系统UIAlertController 【免费下载链接】SDCAlertView The little alert that could 项目地址: https://gitcode.com/gh_mirrors/sd/SDCAlertView SDCAlertView是一款强大的iOS弹窗解决方案&#xff0c;它为…...

Python代码质量双保险:Black格式化与类型提示实战指南

1. 项目概述&#xff1a;当代码格式化遇上类型安全在嵌入式开发&#xff0c;尤其是像CircuitPython这样的微控制器编程领域&#xff0c;代码的清晰度和可靠性往往比在桌面环境更为重要。资源受限、调试困难&#xff0c;意味着每一行代码都最好能“一次写对”。我这些年折腾过不…...

嵌入式Python库CI/CD实战:Travis CI自动化测试与发布

1. 项目概述与核心价值 如果你正在维护一个开源项目&#xff0c;或者在一个小团队里负责核心模块的开发&#xff0c;那么你一定对“这次改动会不会把别人的代码搞坏”这个问题感到头疼。尤其是在嵌入式开发领域&#xff0c;比如我们常用的CircuitPython库&#xff0c;代码最终要…...

AI文档智能审查:从NLP原理到企业级部署实战

1. 项目概述&#xff1a;文档的“哨兵”与智能守护者在信息爆炸的时代&#xff0c;我们每天都要与海量的文档打交道——从一份关键的商业合同、一份严谨的学术论文&#xff0c;到一份复杂的项目需求说明书。这些文档不仅是信息的载体&#xff0c;更是决策的依据、合作的基石。然…...