private Bitmap CreateBlurredImage (int radius) { // Load a clean bitmap and work from that Bitmap originalBitmap= BitmapFactory.DecodeResource(Resources,Resource.Drawable.dog_and_monkeys); // 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 (this); // 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;
}
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;
}
private void BlurImageHandler (object sender, SeekBar.StopTrackingTouchEventArgs e) { int radius = e.SeekBar.Progress; if (radius == 0) { // We don't want to blur, so just load the un-altered image. _imageView.SetImageResource (Resource.Drawable.dog_and_monkeys); } else { DisplayBlurredImage (radius); }
}
private void DisplayBlurredImage (int radius) { _seekbar.StopTrackingTouch -= BlurImageHandler; _seekbar.Enabled = false; ShowIndeterminateProgressDialog (); Task.Factory.StartNew (() => { Bitmap bmp = CreateBlurredImage (radius); return bmp; }) .ContinueWith (task => { Bitmap bmp = task.Result; _imageView.SetImageBitmap (bmp); _seekbar.StopTrackingTouch += BlurImageHandler; _seekbar.Enabled = true; DismissIndeterminateProgressDialog (); }, TaskScheduler.FromCurrentSynchronizationContext ());
}
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <SeekBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/seekBar1" android:max="25" /> <ImageView android:src="@drawable/dog_and_monkeys" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/originalImageView" /> </LinearLayout>
click here deatiled code example
NullPointerExceptiononBitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);