private void BlurTheView(View view) { RenderScript rs = RenderScript.Create(this.Activity); var bitmap = GetBitmapFromView(view); var blurprocesor = new RSBlurProcessor(rs); var blurBitmap = blurprocesor.blur(bitmap, 15, 1); view.Background = new BitmapDrawable(blurBitmap); }
public ShadowView(Context context, View shadowSource, float cornerRadius) : base(context) { _renderScript = RenderScript.Create(context); _weakSource = new JniWeakReference <View>(shadowSource); _shadesBitmaps = new List <Bitmap>(); _cornerRadius = cornerRadius; }
public static void CreateBluredView(this View v, View toCapture, AppCompatActivity activity) { Bitmap bitmap = CaptureView(toCapture); if (bitmap != null) { BlurBitmapWithRenderscript(RenderScript.Create(activity), bitmap); } SetBackgroundOnView(v, bitmap, activity); }
private void InitTextBox() { TextBoxMeetingStartDate.Attributes.Add("onkeypress", "return false;"); TextBoxMeetingEndDate.Attributes.Add("onkeypress", "return false;"); RenderScript.RenderCalendarScript(TextBoxMeetingStartDate, "-"); RenderScript.RenderCalendarScript(TextBoxMeetingEndDate, "-"); TextBoxHost.Text = string.Empty; TextBoxRecorder.Text = LoginName; InitTextBoxAttendee(); }
internal IEnumerator Play(RenderScript render) { Debug.LogFormat("[Quaver #{0}]: Difficulty settings are [{1}, {2}, {3}].", quaver.init.moduleId, quaver.init.select.speed > 9 ? "2.0" : "1." + quaver.init.select.speed, new[] { "Normal", "Hard", "Insane", "Expert" }[quaver.init.select.difficulty], quaver.init.select.perColumn); quaver.Audio.PlaySoundAtTransform(Sounds.Q.Start, quaver.transform); int difficulty = quaver.init.select.difficulty; int speed = quaver.init.select.speed; amplifier = difficulty == 3 ? 5 : 1; length = difficulty == 3 ? 20 : 8; sequence = Pattern(); yield return(quaver.Render.Transition()); yield return(new WaitWhile(() => sequence == string.Empty)); for (int i = 0; i < sequence.Length; i++) { if (QE.CharToInt(sequence[i]) == 0) { ArrowScript.positionsUsed = new int[4]; } for (int j = 0; j < QE.CharToInt(sequence[i]); j++) { render.CreateArrow(QE.CharToInt(sequence[i]), IndexToColor(i)); } render.songProgress = (float)i / sequence.Length; /// EDIT yield return(new WaitForSecondsRealtime(1 / (GetSpeed(speed, difficulty == 3) * amplifier))); } render.songProgress = 1; if (quaver.init.select.perColumn) { foreach (var text in quaver.ReceptorTexts) { text.text = "0"; } } else { quaver.Render.UpdateReceptorTotalText(0); } yield return(new WaitForSecondsRealtime(1)); quaver.init.ready = true; Debug.LogFormat("[Quaver #{0}]: The current solution is {1}.", quaver.init.moduleId, quaver.init.select.perColumn ? ArrowScript.arrowsPerColumn.Join(", ") : ArrowScript.arrowsPerColumn.Sum().ToString()); }
public SimpleBlurTransformation(Context context, int blurRadius) { if (blurRadius > 25) { throw new ArgumentOutOfRangeException("blurRadius", "Blur radius must be within 0 - 25"); } // Create the Renderscript instance that will do the work. m_Rs = RenderScript.Create(context); m_BlurRadius = blurRadius; }
private Bitmap Blur() { //Now I am letting the user to risk by letting them to choose to blur the image when the device runs android 10 and beyond if (new ConfigurationManager(AppPreferences.Default).RetrieveAValue(ConfigurationParameters.BlurEnabledForAndroid10) == false) { //Workaround Android Q: IT causes SIGSEV in Android 10 for some reason. XOM related maybe if (Build.VERSION.SdkInt >= BuildVersionCodes.Q) { return(image); } } if (image == null) { return(image); } if (intensity == 0) { return(image); //No need to blur the image. } Bitmap input; if (image.Width > deviceWidth || image.Height > deviceHeight) { input = Bitmap.CreateScaledBitmap(image, deviceWidth, deviceHeight, false); } else { input = Bitmap.CreateScaledBitmap(image, deviceWidth, deviceHeight, true); } try { Bitmap output = Bitmap.CreateBitmap(input); RenderScript rs = RenderScript.Create(context); ScriptIntrinsicBlur intrinsicBlur = ScriptIntrinsicBlur.Create(rs, Element.U8_4(rs)); Allocation inputallocation = Allocation.CreateFromBitmap(rs, input); Allocation outputallocation = Allocation.CreateFromBitmap(rs, output); intrinsicBlur.SetRadius(intensity); intrinsicBlur.SetInput(inputallocation); intrinsicBlur.ForEach(outputallocation); outputallocation.CopyTo(output); return(output); } catch { return(input); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); imageView = FindViewById <ImageView>(Resource.Id.originalImageView); seekBar = FindViewById <SeekBar>(Resource.Id.seekBar1); seekBar.StopTrackingTouch += BlurImageHandler; // Create the Renderscript context. renderScript = RenderScript.Create(this); }
/// <summary> /// Converts YUV_420_888 raw data to RGB bitmap. /// </summary> /// <returns>The RGB bitmap.</returns> /// <param name="y">Y</param> /// <param name="u">U</param> /// <param name="v">V</param> /// <param name="width">Width</param> /// <param name="height">Height</param> /// <param name="yRowStride">Y row stride (we know from documentation that PixelStride is 1 for y).</param> /// <param name="uvRowStride">UV row stride (we know from documentation that RowStride is the same for u and v).</param> /// <param name="uvPixelStride">Uv pixel stride (we know from documentation that PixelStride is the same for u and v).</param> public Bitmap Yuv420888ToRgb(byte[] y, byte[] u, byte[] v, int width, int height, int yRowStride, int uvRowStride, int uvPixelStride) { // rs creation just for demo. Create rs just once in onCreate and use it again. //RenderScript rs = (activity as MainActivity).RenderScript; // RenderScript.create(this); RenderScript rs = RenderScript.Create(Android.App.Application.Context); //RenderScript rs = MainActivity.rs; ScriptC_yuv420888 mYuv420 = new ScriptC_yuv420888(rs); // Y,U,V are defined as global allocations, the out-Allocation is the Bitmap. // Note also that uAlloc and vAlloc are 1-dimensional while yAlloc is 2-dimensional. RType.Builder typeUcharY = new RType.Builder(rs, Element.U8(rs)); typeUcharY.SetX(yRowStride).SetY(height); Allocation yAlloc = Allocation.CreateTyped(rs, typeUcharY.Create()); yAlloc.CopyFrom(y); mYuv420.Set_ypsIn(yAlloc); RType.Builder typeUcharUV = new RType.Builder(rs, Element.U8(rs)); // note that the size of the u's and v's are as follows: // ( (width/2)*PixelStride + padding ) * (height/2) // = (RowStride ) * (height/2) // but I noted that on the S7 it is 1 less... typeUcharUV.SetX(u.Length); Allocation uAlloc = Allocation.CreateTyped(rs, typeUcharUV.Create()); uAlloc.CopyFrom(u); mYuv420.Set_uIn(uAlloc); Allocation vAlloc = Allocation.CreateTyped(rs, typeUcharUV.Create()); vAlloc.CopyFrom(v); mYuv420.Set_vIn(vAlloc); // handover parameters mYuv420.Set_picWidth(width); mYuv420.Set_uvRowStride(uvRowStride); mYuv420.Set_uvPixelStride(uvPixelStride); Bitmap outBitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); Allocation outAlloc = Allocation.CreateFromBitmap(rs, outBitmap, Allocation.MipmapControl.MipmapNone, Allocation.UsageScript); Script.LaunchOptions lo = new Script.LaunchOptions(); lo.SetX(0, width); // by this we ignore the y’s padding zone, i.e. the right side of x between width and yRowStride lo.SetY(0, height); mYuv420.ForEach_doConvert(outAlloc, lo); outAlloc.CopyTo(outBitmap); return(outBitmap); }
private void ReleaseScript() { if (mRenderScript != null) { mRenderScript.Destroy(); mRenderScript = null; } if (mBlurScript != null) { mBlurScript.Destroy(); mBlurScript = null; } }
public ShadowView(Context context, View shadowSource, float cornerRadius, string tag = null) : base(context) { _renderScript = RenderScript.Create(context); _weakSource = new JniWeakReference <View>(shadowSource); _cache = BitmapCache.Instance; _shadeInfos = new Dictionary <Shade, ShadeInfo>(); _cornerRadius = cornerRadius; LogTag = !string.IsNullOrEmpty(tag) ? $"{nameof(ShadowView)}@{tag}" : nameof(ShadowView); InternalLogger.Debug(LogTag, () => $"ShadowView(): {++instanceCount} instances"); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); RenderScript = RenderScript.Create(this); var layout = new AbsoluteLayout(this); Urho.Application.Started += UrhoAppStarted; var surface = UrhoSurface.CreateSurface <UrhoApp>(this); surface.SetBackgroundColor(Color.Transparent); layout.AddView(surface); SetContentView(layout); }
public static void BlurBitmapWithRenderscript(RenderScript rs, Bitmap bitmap2) { // this will blur the bitmapOriginal with a radius of 25 // and save it in bitmapOriginal // use this constructor for best performance, because it uses // USAGE_SHARED mode which reuses memory Allocation input = Allocation.CreateFromBitmap(rs, bitmap2); Allocation output = Allocation.CreateTyped(rs, input.Type); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.Create(rs, Element.U8_4(rs)); // must be >0 and <= 25 script.SetRadius(25f); script.SetInput(input); script.ForEach(output); output.CopyTo(bitmap2); }
public static Bitmap Blur(Bitmap BMap, float Radius) { Bitmap MutableBMap = BMap.Copy(Bitmap.Config.Argb8888, true); RenderScript RS = RenderScript.Create(Application.Context); Allocation Input = Allocation.CreateFromBitmap(RS, MutableBMap, Allocation.MipmapControl.MipmapFull, AllocationUsage.Script); Allocation Output = Allocation.CreateTyped(RS, Input.Type); ScriptIntrinsicBlur Script = ScriptIntrinsicBlur.Create(RS, Element.U8_4(RS)); Script.SetInput(Input); Script.SetRadius(20); Script.ForEach(Output); Output.CopyTo(MutableBMap); return(MutableBMap); }
protected override void DisposeObject() { if (_input != null) { _input.Destroy(); _input = null; } if (_yuvToRgbIntrinsic != null) { _yuvToRgbIntrinsic.Destroy(); _yuvToRgbIntrinsic = null; } if (rs != null) { rs.Destroy(); rs = null; } }
private void Init(Context context, IAttributeSet attrs) { // set up the script try { renderScript = RenderScript.Create(context); blurScript = ScriptIntrinsicBlur.Create(renderScript, Element.U8_4(renderScript)); } catch (Java.Lang.RuntimeException ex) { if (ex.Class.Name == "android.support.v8.renderscript.RSRuntimeException") { Console.WriteLine(ex); } else { throw; } } // set the default values BlurRadius = DefaultBlurRadius; DownsampleFactor = DefaultDownsampleFactor; OverlayColor = DefaultOverlayColor; OverlayBackgroundColor = DefaultOverlayBackgroundColor; BlurredView = null; if (attrs != null) { // read any XML values var a = context.Theme.ObtainStyledAttributes(attrs, Resource.Styleable.BlurringView, 0, 0); try { BlurRadius = a.GetInteger(Resource.Styleable.BlurringView_blurRadius, DefaultBlurRadius); DownsampleFactor = a.GetInteger(Resource.Styleable.BlurringView_downsampleFactor, DefaultDownsampleFactor); OverlayColor = a.GetColor(Resource.Styleable.BlurringView_overlayColor, DefaultOverlayColor); OverlayBackgroundColor = a.GetColor(Resource.Styleable.BlurringView_overlayBackgroundColor, DefaultOverlayBackgroundColor); } finally { a.Recycle(); } } }
public void Show() { var obj = (Activity)Xamarin.Forms.Forms.Context; var root = obj.Window.DecorView.FindViewById(Resource.Id.Content); root.DrawingCacheEnabled = true; var b = Bitmap.CreateBitmap(root.GetDrawingCache(true)); root.DrawingCacheEnabled = false; // Create another bitmap that will hold the results of the filter. Bitmap blurredBitmap; blurredBitmap = Bitmap.CreateBitmap(b); // Create the Renderscript instance that will do the work. RenderScript rs = RenderScript.Create(obj); // Allocate memory for Renderscript to work with Allocation input = Allocation.CreateFromBitmap(rs, b, Allocation.MipmapControl.MipmapFull, AllocationUsage.Script); Allocation output = Allocation.CreateTyped(rs, input.Type); // Load up an instance of the specific script that we want to use. ScriptIntrinsicBlur script = ScriptIntrinsicBlur.Create(rs, Renderscripts.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); dialog = new Dialog(obj, Resource.Style.ThemeNoTitleBar); Drawable d = new BitmapDrawable(blurredBitmap); dialog.Window.SetBackgroundDrawable(d); dialog.Show(); }
protected override void OnAttachedToWindow() { base.OnAttachedToWindow(); if (useBlur) { rs = RenderScript.Create(Context); if (rs != null) { script = ScriptIntrinsicBlur.Create(rs, Android.Renderscripts.Element.U8_4(rs)); } if (Element != null) { UpdateBackgroundColor(); } } }
Bitmap BlurImage(Bitmap input) { try { var rsScript = RenderScript.Create(Context); var alloc = Allocation.CreateFromBitmap(rsScript, input); var blur = ScriptIntrinsicBlur.Create(rsScript, alloc.Element); blur.SetRadius(12); blur.SetInput(alloc); var result = Bitmap.CreateBitmap(input.Width, input.Height, input.GetConfig()); var outAlloc = Allocation.CreateFromBitmap(rsScript, result); blur.ForEach(outAlloc); outAlloc.CopyTo(result); rsScript.Destroy(); return(result); } catch (Exception e) { Log.Error("Blurrer", "Error while trying to blur, fallbacking. " + e.ToString()); return(input); } }
private void CreateBlurredImage(int radius) { // Load a clean bitmap and work from that. Bitmap originalBitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.dog_and_monkeys); if (blurredBmp != null) { blurredBmp.Recycle(); blurredBmp.Dispose(); blurredBmp = null; } // Create another bitmap that will hold the results of the filter. blurredBmp = Bitmap.CreateBitmap(originalBitmap); // Create the Renderscript instance that will do the work. RenderScript rs = RenderScript.Create(this); // Allocate memory for Renderscript to work with Allocation input = Allocation.CreateFromBitmap(rs, originalBitmap, Allocation.MipmapControl.MipmapFull, Allocation.UsageScript); Allocation output = Allocation.CreateTyped(rs, input.Type); // 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(radius); // Start Renderscript working. script.ForEach(output); // Copy the output to the blurred bitmap output.CopyTo(blurredBmp); input.Destroy(); input.Dispose(); output.Destroy(); output.Dispose(); }
public Bitmap CreateBlurredImageoffline(Context contexto, int radius, int resid) { // Load a clean bitmap and work from that. WallpaperManager wm = WallpaperManager.GetInstance(this); Drawable d = wm.Drawable; Bitmap originalBitmap; originalBitmap = ((BitmapDrawable)d).Bitmap; if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBeanMr1) { // Create another bitmap that will hold the results of the filter. Bitmap blurredBitmap; blurredBitmap = Bitmap.CreateBitmap(originalBitmap); // Create the Renderscript instance that will do the work. RenderScript rs = RenderScript.Create(contexto); // Allocate memory for Renderscript to work with Allocation input = Allocation.CreateFromBitmap(rs, originalBitmap, Allocation.MipmapControl.MipmapFull, AllocationUsage.Script); Allocation output = Allocation.CreateTyped(rs, input.Type); // 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(radius); // Start the ScriptIntrinisicBlur script.ForEach(output); // Copy the output to the blurred bitmap output.CopyTo(blurredBitmap); return(blurredBitmap); } else { return(originalBitmap); } }
public static Bitmap Blur(Context ctx, Bitmap image) { int width = (int)Math.Round(image.Width * BITMAP_SCALE); int height = (int)Math.Round(image.Height * BITMAP_SCALE); Bitmap inputBitmap = Bitmap.CreateScaledBitmap(image, width, height, false); Bitmap outputBitmap = Bitmap.CreateBitmap(inputBitmap); var rs = RenderScript.Create(ctx); 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); }
private Bitmap CreateBlurredImage(int radius, Bitmap originalBitmap) { Bitmap blurredBitmap; blurredBitmap = Bitmap.CreateBitmap(originalBitmap); var rs = RenderScript.Create(Forms.Context); var input = Allocation.CreateFromBitmap(rs, originalBitmap, Allocation.MipmapControl.MipmapFull, AllocationUsage.Script); var output = Allocation.CreateTyped(rs, input.Type); var script = ScriptIntrinsicBlur.Create(rs, Android.Renderscripts.Element.U8_4(rs)); script.SetInput(input); script.SetRadius(radius); script.ForEach(output); output.CopyTo(blurredBitmap); return(blurredBitmap); }
protected override void OnDetachedFromWindow() { script?.Dispose(); script = null; sourceCanvas?.Dispose(); sourceCanvas = null; source?.Dispose(); source = null; blurred?.Dispose(); blurred = null; rs?.Dispose(); rs = null; if (Element != null) { UpdateBackgroundColor(); } base.OnDetachedFromWindow(); }
public Bitmap FnBlurEffectToImage(Bitmap image) { if (image == null) { return(null); } Bitmap outputBitmap = Bitmap.CreateBitmap(image); RenderScript renderScript = RenderScript.Create(this); Allocation tmpIn = Allocation.CreateFromBitmap(renderScript, image); Allocation tmpOut = Allocation.CreateFromBitmap(renderScript, outputBitmap); //Intrinsic Gausian blur filter ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.Create(renderScript, Element.U8_4(renderScript)); theIntrinsic.SetRadius(10f); theIntrinsic.SetInput(tmpIn); theIntrinsic.ForEach(tmpOut); tmpOut.CopyTo(outputBitmap); return(outputBitmap); }
protected override Android.Graphics.Bitmap Transform(Android.Graphics.Bitmap source) { Bitmap outBitmap = Bitmap.CreateBitmap(source.Width, source.Height, Bitmap.Config.Argb8888); Canvas canvas = new Canvas(outBitmap); canvas.DrawBitmap(source, 0, 0, null); RenderScript rs = RenderScript.Create(mContext); Allocation overlayAlloc = Allocation.CreateFromBitmap(rs, outBitmap); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.Create(rs, overlayAlloc.Element); blur.SetInput(overlayAlloc); blur.SetRadius(mRadius); blur.ForEach(overlayAlloc); overlayAlloc.CopyTo(outBitmap); source.Recycle(); rs.Destroy(); return(outBitmap); }
private void DatabaseVariable_Updated(object sender, Ao3TrackDatabase.VariableUpdatedEventArgs e) { Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { bool.TryParse(e.NewValue, out useBlur); if (useBlur) { if (IsAttachedToWindow) { if (rs == null) { rs = RenderScript.Create(Context); } if (rs != null) { script = ScriptIntrinsicBlur.Create(rs, Android.Renderscripts.Element.U8_4(rs)); } } } else { script?.Dispose(); script = null; sourceCanvas?.Dispose(); sourceCanvas = null; source?.Dispose(); source = null; blurred?.Dispose(); blurred = null; rs?.Dispose(); rs = null; } if (Element != null) { UpdateBackgroundColor(); } }); }
public static Bitmap Blur(this Bitmap image, Context context, float blurRadius = 25) { Bitmap outputBitmap = null; if (image != null) { if (blurRadius == 0) { return(image); } if (blurRadius < 1) { blurRadius = 1; } if (blurRadius > 25) { blurRadius = 25; } BLUR_RADIUS = blurRadius; int width = (int)Math.Round(image.Width * BITMAP_SCALE); int height = (int)Math.Round(image.Width * BITMAP_SCALE); Bitmap inputBitmap = Bitmap.CreateScaledBitmap(image, width, height, false); 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); }
public Drawable Difuminar(Drawable papelTapiz) { //Fondo de escritorio provista por el Argumento que se pasa en <papelTapiz> Bitmap originalBitmap = ((BitmapDrawable)papelTapiz).Bitmap; // Un bitmap null que almacenará la imagen difuminada. Bitmap blurredBitmap; //Asignar a este bitmap la imagen original para trabajar con ella. blurredBitmap = Bitmap.CreateBitmap(originalBitmap); //Crear la instancia de RenderScript que hará el trabajo RenderScript rs = RenderScript.Create(Application.Context); //Alocar memoria para que RenderScript trabaje. Allocation input = Allocation.CreateFromBitmap(rs, originalBitmap, Allocation.MipmapControl.MipmapFull, AllocationUsage.Script); Allocation output = Allocation.CreateTyped(rs, input.Type); // 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); //Scale the bitmap: Bitmap blurredBitMapResized = Bitmap.CreateScaledBitmap(blurredBitmap, 70, 80, false); Drawable papelTapizDifuminado = new BitmapDrawable(blurredBitMapResized); originalBitmap = null; blurredBitmap = null; blurredBitMapResized = null; return(papelTapizDifuminado); }
public Bitmap Blur(string key, Bitmap bitmap, Color color) { if (bitmap == null) { return(null); } var red = Color.GetRedComponent(color); var blue = Color.GetBlueComponent(color); var green = Color.GetGreenComponent(color); var blurColor = new Color(red, green, blue, 66); var px = 70f * ((float)metrics.DensityDpi / 160f); var pxs = Math.Round(px); var ratio = pxs / bitmap.Height; var height = (ratio * bitmap.Height); var y = bitmap.Height - height; var portionToBlur = Bitmap.CreateBitmap(bitmap, 0, (int)y, bitmap.Width, (int)height); var blurredBitmap = portionToBlur.Copy(Bitmap.Config.Argb8888, true); var renderScript = RenderScript.Create(context); var theIntrinsic = ScriptIntrinsicBlur.Create(renderScript, Element.U8_4(renderScript)); var tmpIn = Allocation.CreateFromBitmap(renderScript, portionToBlur); var tmpOut = Allocation.CreateFromBitmap(renderScript, blurredBitmap); theIntrinsic.SetRadius(25f); theIntrinsic.SetInput(tmpIn); theIntrinsic.ForEach(tmpOut); tmpOut.CopyTo(blurredBitmap); new Canvas(blurredBitmap).DrawColor(blurColor); var newBitmap = bitmap.Copy(Bitmap.Config.Argb8888, true); var canvas = new Canvas(newBitmap); canvas.DrawBitmap(blurredBitmap, 0, (int)y, new Paint()); return(newBitmap); }
Blur(Context context) { rs = RenderScript.Create(context); }