Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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();
 }
Esempio n. 5
0
        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;
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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);
        }
Esempio n. 10
0
        private void ReleaseScript()
        {
            if (mRenderScript != null)
            {
                mRenderScript.Destroy();
                mRenderScript = null;
            }

            if (mBlurScript != null)
            {
                mBlurScript.Destroy();
                mBlurScript = null;
            }
        }
Esempio n. 11
0
        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);
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
 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;
     }
 }
Esempio n. 16
0
        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();
                }
            }
        }
Esempio n. 17
0
        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();
        }
Esempio n. 18
0
        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();
                }
            }
        }
Esempio n. 19
0
 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);
     }
 }
Esempio n. 20
0
        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);
            }
        }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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);
        }
Esempio n. 24
0
        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();
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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);
        }
Esempio n. 27
0
        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();
                }
            });
        }
Esempio n. 28
0
        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);
        }
Esempio n. 29
0
        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);
        }
Esempio n. 30
0
        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);
 }