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

embedded/2025/2/1 18:02:07/

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


http://www.ppmy.cn/embedded/158698.html

相关文章

剑指offer 字符串 持续更新中...

文章目录 1. 替换空格1.1 题目描述1.2 从前向后替换空格1.3 从后向前替换空格 持续更新中… 1. 替换空格 替换空格 1.1 题目描述 题目描述&#xff1a;将一个字符串s中的每个空格替换成“%20”。 示例&#xff1a; 输入&#xff1a;"We Are Happy" 返回&#xf…

缩位求和——蓝桥杯

1.题目描述 在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。 比如&#xff1a;248153720248153720 把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是 1 位数&#xff0c;得 24814>145 156 56 而…

Oracle11g数据库安装及建库教程

Oracle11g数据库安装及建库 介绍了如何安装Oracle 11 g数据库以及建库操作 相关环境配置&#xff1a; CentOS Linux release 7.9.2009 (Core) 内存 8g 硬盘大小 50g 安装方式&#xff1a;静默安装 下载安装包 Database Software Downloads | Oracle 中国 在官网下载完这两个安…

环境中的CUDA配置

配置 Conda 环境中的 CUDA 和相关工具的环境变量。解释它们的作用。 1. 检查命令行是否有错误 注意以下几点&#xff1a; $CONDA_PREFIX 是一个环境变量&#xff0c;表示当前激活的 Conda 环境的路径。确保在执行这些命令之前已经激活了目标环境。 $(which g) 是一个命令替换…

翻译: Dario Amodei 关于DeepSeek与出口管制一

几周前&#xff0c;我曾提议加强美国对芯片出口到中国的管制。此后&#xff0c;中国的人工智能公司DeepSeek在某些方面成功地以较低的成本&#xff0c;接近了美国前沿人工智能模型的表现。 在这里&#xff0c;我不会专注于DeepSeek是否对美国人工智能公司如Anthropic构成威胁&…

基于机器学习链家网房屋数据分析预测系统的设计与实现

【Python】基于机器学习链家网房屋数据分析预测系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本系统首先从链家网爬取或接收其开放API提供的房屋数据&#xff0c;包括房屋位…

《苍穹外卖》项目学习记录-Day5在Java中操作Redis_Spring Data Redis

1.导入Spring Data Redis 的maven坐标。 Redis服务启动之后&#xff0c;默认情况下&#xff0c;它在Redis服务当中给我们创建了16个库&#xff08;DB0~DB15&#xff09;&#xff0c;我们可以通过database配置项来指定数据库。不同的数据库当中的数据是完全隔离的&#xff0c;da…

DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型&#xff0c;娜姐昨天分析了关于论文润色、中译英的详细效果测评&#xff1a; DeepSeek学术写作测评第一弹&#xff1a;论文润色&#…