安卓图片转玻璃效果算法
效果图<火山程序 类型 = "通常" 版本 = 1 />
方法 玻璃效果图 <公开 静态 类型 = 可绘制对象类 折叠 折叠2
@java.导入 = "android.content.Context\n android.graphics.Bitmap\n android.graphics.BitmapFactory\n android.graphics.Canvas\n android.graphics.drawable.BitmapDrawable\nandroid.graphics.drawable.Drawable\n android.renderscript.Allocation\nandroid.renderscript.Element\n android.renderscript.RenderScript\nandroid.renderscript.ScriptIntrinsicBlur"
@禁止流程检查 = 真>
参数 欲窗口 <类型 = 安卓窗口>
参数 图片路径 <类型 = 文本型>
{
变量 位图 <参考 类型 = 位图类>
位图 = 可绘制对象类转位图类 (外部图像转可绘制对象类 (欲窗口, 图片路径))
// 创建一个与输入 Bitmap 相同大小的输出 Bitmap
@ Bitmap outputBitmap = Bitmap.createBitmap(@<位图>.getWidth(), @<位图>.getHeight(), Bitmap.Config.ARGB_8888);
// 创建 RenderScript 对象
@ RenderScript rs = RenderScript.create(@<欲窗口>);
// 创建 Allocation 对象
@ Allocation inputAllocation = Allocation.createFromBitmap(rs, @<位图>);
@ Allocation outputAllocation = Allocation.createFromBitmap(rs, outputBitmap);
// 创建 ScriptIntrinsicBlur 对象
@ ScriptIntrinsicBlur scriptBlur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
// 设置模糊半径
// @ scriptBlur.setRadius(10f);
@ scriptBlur.setRadius(24f);//模糊效果
// 应用模糊效果
@ scriptBlur.setInput(inputAllocation);
@ scriptBlur.forEach(outputAllocation);
// 将输出数据保存到输出 Bitmap
@ outputAllocation.copyTo(outputBitmap);
// 销毁 RenderScript 对象
@ rs.destroy();
// 将 Bitmap 转换为 Drawable
变量 位图可绘制对象 <参考 类型 = 位图可绘制对象类>
变量 位图2 <参考 类型 = 位图类>
@ @<位图可绘制对象>=new BitmapDrawable(@<欲窗口>.getResources(), outputBitmap);
位图2 = 位图可绘制对象.取位图 ()
返回 (位图到可绘对象类 (位图2))
}
方法 位图到可绘对象类 <公开 静态 类型 = 可绘制对象类 折叠>
参数 位图 <类型 = 位图类>
{
返回 ((可绘制对象类)位图可绘制对象类.从位图创建 (位图))
}
方法 可绘制对象类转位图类 <公开 静态 类型 = 位图类 注释 = "从可绘制对象类创建位图对象" 返回值注释 = "返回创建后的位图,失败返回空对象。" 折叠>
参数 可绘制对象 <类型 = 可绘制对象类 注释 = "提供可绘制对象类">
{
如果 (可绘制对象 属于 位图可绘制对象类)
{
返回 (((位图可绘制对象类)可绘制对象).取位图 ())
}
否则 (可绘制对象 属于 图像加载可绘制对象类)
{
返回 (((图像加载可绘制对象类)可绘制对象).取位图 ())
}
否则
{
返回 (空对象)
}
}
方法 外部图像转可绘制对象类 <公开 静态 类型 = 可绘制对象类 折叠>
参数 欲窗口 <类型 = 安卓窗口>
参数 文件路径 <类型 = 文本型>
参数 临时图片 <类型 = 图片框 注释 = "忽略即可" @默认值 = 空对象>
{
临时图片 = 欲窗口.创建窗口组件 (图片框, )
临时图片.置图片数据 (读入文件 (文件路径))
返回 (临时图片.取图片 ())
}
opencv有高斯模糊,仅需一行代码搞定 qqqkoko123 发表于 2023-11-4 19:01
opencv有高斯模糊,仅需一行代码搞定
一个小东西带几十MB的库,说不去啊.{:3_61:} ゞ情非得已Sky 发表于 2023-11-5 08:52
一个小东西带几十MB的库,说不去啊.
小软件没有生存力,肯定是要做大做强的
页:
[1]