android.renderscript.Allocation.createFromBitmap()方法的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(10.9k)|赞(0)|评价(0)|浏览(117)

本文整理了Java中android.renderscript.Allocation.createFromBitmap()方法的一些代码示例,展示了Allocation.createFromBitmap()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Allocation.createFromBitmap()方法的具体详情如下:
包路径:android.renderscript.Allocation
类名称:Allocation
方法名:createFromBitmap

Allocation.createFromBitmap介绍

暂无

代码示例

代码示例来源:origin: HotBitmapGG/bilibili-android-client

/**
   * 图片高斯模糊具体实现方法
   */
  public static Bitmap blur(Context context, Bitmap image, float radius) {
    // 计算图片缩小后的长宽
    int width = Math.round(image.getWidth() * BITMAP_SCALE);
    int height = Math.round(image.getHeight() * BITMAP_SCALE);
    // 将缩小后的图片做为预渲染的图片。
    Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
    // 创建一张渲染后的输出图片。
    Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
    // 创建RenderScript内核对象
    RenderScript rs = RenderScript.create(context);
    // 创建一个模糊效果的RenderScript的工具对象
    ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
    // 由于RenderScript并没有使用VM来分配内存,所以需要使用Allocation类来创建和分配内存空间。
    // 创建Allocation对象的时候其实内存是空的,需要使用copyTo()将数据填充进去。
    Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
    Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
    // 设置渲染的模糊程度, 25f是最大模糊度
    blurScript.setRadius(radius);
    // 设置blurScript对象的输入内存
    blurScript.setInput(tmpIn);
    // 将输出数据保存到输出内存中
    blurScript.forEach(tmpOut);
    // 将数据填充到Allocation中
    tmpOut.copyTo(outputBitmap);
    return outputBitmap;
  }
}

代码示例来源:origin: cymcsg/UltimateAndroid

final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
    Allocation.USAGE_SCRIPT);
final Allocation output = Allocation.createTyped(rs, input.getType());

代码示例来源:origin: Dimezis/BlurView

/**
 * @param bitmap     bitmap to blur
 * @param blurRadius blur radius (1..25)
 * @return blurred bitmap
 */
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public final Bitmap blur(Bitmap bitmap, float blurRadius) {
  //Allocation will use the same backing array of pixels as bitmap if created with USAGE_SHARED flag
  Allocation inAllocation = Allocation.createFromBitmap(renderScript, bitmap);
  if (!canReuseAllocation(bitmap)) {
    if (outAllocation != null) {
      outAllocation.destroy();
    }
    outAllocation = Allocation.createTyped(renderScript, inAllocation.getType());
    lastBitmapWidth = bitmap.getWidth();
    lastBitmapHeight = bitmap.getHeight();
  }
  blurScript.setRadius(blurRadius);
  blurScript.setInput(inAllocation);
  //do not use inAllocation in forEach. it will cause visual artifacts on blurred Bitmap
  blurScript.forEach(outAllocation);
  outAllocation.copyTo(bitmap);
  inAllocation.destroy();
  return bitmap;
}

代码示例来源:origin: CameraKit/blurkit-android

public Bitmap blur(Bitmap src, int radius) {
  final Allocation input = Allocation.createFromBitmap(rs, src);
  final Allocation output = Allocation.createTyped(rs, input.getType());
  final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  script.setRadius(radius);
  script.setInput(input);
  script.forEach(output);
  output.copyTo(src);
  return src;
}

代码示例来源:origin: wasabeef/glide-transformations

rs = RenderScript.create(context);
rs.setMessageHandler(new RenderScript.RSMessageHandler());
input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE,
  Allocation.USAGE_SCRIPT);
output = Allocation.createTyped(rs, input.getType());

代码示例来源:origin: wasabeef/Blurry

rs = RenderScript.create(context);
rs.setMessageHandler(new RenderScript.RSMessageHandler());
input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE,
  Allocation.USAGE_SCRIPT);
output = Allocation.createTyped(rs, input.getType());

代码示例来源:origin: multidots/android-app-common-tasks

bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
final RenderScript rs = RenderScript.create(context);
final Allocation input = Allocation.createFromBitmap(rs,
    sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
    Allocation.USAGE_SCRIPT);

代码示例来源:origin: multidots/android-app-common-tasks

bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);
final RenderScript rs = RenderScript.create(context);
final Allocation input = Allocation.createFromBitmap(rs,
    sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
    Allocation.USAGE_SCRIPT);

代码示例来源:origin: Blizzard-liu/AndroidUtils

final Allocation input = Allocation.createFromBitmap(rs,
    sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
    Allocation.USAGE_SCRIPT);

代码示例来源:origin: jingle1267/android-utils

final Allocation input = Allocation.createFromBitmap(rs,
    sentBitmap, Allocation.MipmapControl.MIPMAP_NONE,
    Allocation.USAGE_SCRIPT);

代码示例来源:origin: sunfusheng/GlideImageView

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public static Bitmap rsBlur(Context context, Bitmap toTransform, int radius) {
  RenderScript renderScript = RenderScript.create(context);
  Allocation input = Allocation.createFromBitmap(renderScript, toTransform);
  Allocation output = Allocation.createTyped(renderScript, input.getType());
  ScriptIntrinsicBlur scriptIntrinsicBlur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
  scriptIntrinsicBlur.setInput(input);
  scriptIntrinsicBlur.setRadius(radius);
  scriptIntrinsicBlur.forEach(output);
  output.copyTo(toTransform);
  renderScript.destroy();
  return toTransform;
}

代码示例来源:origin: guolindev/giffun

rs = RenderScript.create(context);
rs.setMessageHandler(new RenderScript.RSMessageHandler());
input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE,
  Allocation.USAGE_SCRIPT);
output = Allocation.createTyped(rs, input.getType());

代码示例来源:origin: ApplikeySolutions/OrionPreview

public Bitmap blur(Context context, Bitmap image) {
  int width = Math.round(image.getWidth() * BITMAP_SCALE);
  int height = Math.round(image.getHeight() * BITMAP_SCALE);
  Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
  Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
  RenderScript rs = RenderScript.create(context);
  ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
  Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
  theIntrinsic.setRadius(BLUR_RADIUS);
  theIntrinsic.setInput(tmpIn);
  theIntrinsic.forEach(tmpOut);
  tmpOut.copyTo(outputBitmap);
  return outputBitmap;
}

代码示例来源:origin: nvllsvm/Audinaut

public static Bitmap blur(Context context, Bitmap image) {
    int width = Math.round(image.getWidth() * BITMAP_SCALE);
    int height = Math.round(image.getHeight() * BITMAP_SCALE);

    Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
    Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);

    RenderScript rs = RenderScript.create(context);
    ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
    Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
    Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
    theIntrinsic.setRadius(BLUR_RADIUS);
    theIntrinsic.setInput(tmpIn);
    theIntrinsic.forEach(tmpOut);
    tmpOut.copyTo(outputBitmap);

    return outputBitmap;
  }
}

代码示例来源:origin: bxbxbai/ZhuanLan

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void blur(Bitmap bkg, View view) {
  long startMs = System.currentTimeMillis();
  float radius = 10;
  Bitmap overlay = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(overlay);
  canvas.translate(-view.getLeft(), -view.getTop());
  canvas.drawBitmap(bkg, 0, 0, null);
  RenderScript rs = RenderScript.create(this);
  Allocation allocation = Allocation.createFromBitmap(rs, overlay);
  ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, allocation.getElement());
  blur.setInput(allocation);
  blur.setRadius(radius);
  blur.forEach(allocation);
  allocation.copyTo(overlay);
  view.setBackground(new BitmapDrawable(getResources(), overlay));
  rs.destroy();
  StopWatch.log(System.currentTimeMillis() - startMs + "ms");
}

代码示例来源:origin: zzkong/BaseProject

/**
 *  图片模糊效果
 */
public static Bitmap blurBitmap(Context context, Bitmap bitmap, float radius){
  Bitmap outBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
  RenderScript rs = RenderScript.create(context);
  ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  Allocation allIn = Allocation.createFromBitmap(rs, bitmap);
  Allocation allOut = Allocation.createFromBitmap(rs, bitmap);
  blurScript.setRadius(radius);
  blurScript.setInput(allIn);
  blurScript.forEach(allOut);
  allOut.copyTo(outBitmap);
  bitmap.recycle();
  rs.destroy();
  return outBitmap;
}

代码示例来源:origin: SmartDengg/RxBlur

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @Override
public Bitmap transform(@NonNull Bitmap source) {
 Bitmap blurredBitmap =
   Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
 Canvas canvas = new Canvas(blurredBitmap);
 Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
 paint.setAntiAlias(true);
 canvas.drawBitmap(source, 0, 0, paint);
 RenderScript renderScript = RenderScript.create(context);
 Allocation input =
   Allocation.createFromBitmap(renderScript, source, Allocation.MipmapControl.MIPMAP_FULL,
     Allocation.USAGE_SCRIPT);
 Allocation output = Allocation.createTyped(renderScript, input.getType());
 ScriptIntrinsicBlur scriptIntrinsicBlur =
   ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
 scriptIntrinsicBlur.setInput(input);
 scriptIntrinsicBlur.setRadius(blurRadius);
 scriptIntrinsicBlur.forEach(output);
 output.copyTo(blurredBitmap);
 source.recycle();
 scriptIntrinsicBlur.destroy();
 return blurredBitmap;
}

代码示例来源:origin: devendroid/SketchImage

private Bitmap toBlur(Bitmap input, float i) {
  try {
    RenderScript rsScript = RenderScript.create(context);
    Allocation alloc = Allocation.createFromBitmap(rsScript, input);
    ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rsScript, Element.U8_4(rsScript));
    blur.setRadius((i * 25) / 100);
    blur.setInput(alloc);
    Bitmap result = Bitmap.createBitmap(input.getWidth(), input.getHeight(), Bitmap.Config.ARGB_8888);
    Allocation outAlloc = Allocation.createFromBitmap(rsScript, result);
    blur.forEach(outAlloc);
    outAlloc.copyTo(result);
    rsScript.destroy();
    return result;
  } catch (Exception e) {
    // TODO: handle exception
    return input;
  }
}

代码示例来源:origin: xuhongv/SmartHome

@Override
public Bitmap transform(Bitmap bitmap) {
  // Create another bitmap that will hold the results of the filter.
  Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
  // Allocate memory for Renderscript to work with
  Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED);
  Allocation output = Allocation.createTyped(rs, input.getType());
  // Load up an instance of the specific script that we want to use.
  ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  script.setInput(input);
  // Set the blur radius
  script.setRadius(25);
  // Start the ScriptIntrinisicBlur
  script.forEach(output);
  // Copy the output to the blurred bitmap
  output.copyTo(blurredBitmap);
  bitmap.recycle();
  return blurredBitmap;
}

代码示例来源:origin: dabutaizha/juzimi

private static Bitmap blurRenderScript(Context context, Bitmap smallBitmap, int radius) {
  RenderScript rs = RenderScript.create(context);
  Bitmap blurredBitmap = smallBitmap.copy(Bitmap.Config.ARGB_8888, true);
  Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED);
  Allocation output = Allocation.createTyped(rs, input.getType());
  // Load up an instance of the specific script that we want to use.
  ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
  script.setInput(input);
  script.setRadius(radius);
  script.forEach(output);
  output.copyTo(blurredBitmap);
  return blurredBitmap;
}

相关文章