mjava高斯模糊图片
2023-01-24 09:16:15 最后更新
.iyu
/.
使用RenderScript进行模糊处理
bitmap 需要模糊的图片
注意:bitmap传入mjava的应为
android.graphics.Bitmap
传入其他类型报错
radius 模糊半径
scale  缩放倍数
back:模糊后的图片
转自大不6仙,使用必须在软件内标名!!!
./
s bitmap = "/storage/emulated/0/嗯/1040201432-1e6223a7f96d1f9c.jpg"
s radius = 2
s scale = 10
sbp(bitmap,bitmap)
call(back, "mjava", "photo_blur.scriptBlur", bitmap,radius,scale)
us(1,"background",back)
photo_blur.mjava
import java.net.URI;
import java.io.File;
import android.graphics.drawable.BitmapDrawable;
import android.widget.ImageView;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.ScriptIntrinsicBlur;
import android.renderscript.RenderScript;
import android.graphics.Bitmap;
public Bitmap scriptBlur(Bitmap bitmap, int radius, int scale)
{

  //直接复用传入的bitmap,回收还给用户处理
  bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth()/scale, bitmap.getHeight()/scale,false);

  long startTime = System.currentTimeMillis();

  RenderScript rs = RenderScript.create(activity);
  ScriptIntrinsicBlur sb = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  Allocation inp = Allocation.createFromBitmap(rs, bitmap);
  Allocation otp = Allocation.createTyped(rs, inp.getType());

  sb.setRadius(radius);
  sb.setInput(inp);
  sb.forEach(otp);
  otp.copyTo(bitmap);
  long endTime = System.currentTimeMillis();
  long useTime = (endTime - startTime);
  //syso("处理用时:"+useTime+"ms");
  rs.destroy();
  sb.destroy();
  return bitmap;
}