Java Code Examples for android.renderscript.Allocation#copyTo()
The following examples show how to use
android.renderscript.Allocation#copyTo() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BlurTransformation.java From mollyim-android with GNU General Public License v3.0 | 6 votes |
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { Matrix scaleMatrix = new Matrix(); scaleMatrix.setScale(bitmapScaleFactor, bitmapScaleFactor); Bitmap blurredBitmap = Bitmap.createBitmap(toTransform, 0, 0, outWidth, outHeight, scaleMatrix, true); Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED); Allocation output = Allocation.createTyped(rs, input.getType()); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setInput(input); script.setRadius(blurRadius); script.forEach(output); output.copyTo(blurredBitmap); return blurredBitmap; }
Example 2
Source File: BitmapBlurHelper.java From AroundCircleView with Apache License 2.0 | 6 votes |
/** * 模糊函数 * @param context * @param sentBitmap * @param radius * @return */ public static Bitmap doBlur(Context context, Bitmap sentBitmap, float radius) { if(sentBitmap==null) return null; if (radius <= 0 || radius > 25) radius = 25f;//范围在1-25之间 if (radius<=6&& Build.VERSION.SDK_INT > 16) {//经测试,radius大于6后,fastBlur效率更高,并且RenderScript在api11以上使用 Bitmap bitmap = Bitmap.createScaledBitmap(sentBitmap, sentBitmap.getWidth()/SCALE,sentBitmap.getHeight()/SCALE,false);//先缩放图片,增加模糊速度 final RenderScript rs = RenderScript.create(context); final Allocation input = Allocation.createFromBitmap(rs, bitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); 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(bitmap); rs.destroy(); return bitmap; }else{//快速模糊 return fastBlur(sentBitmap,radius); } }
Example 3
Source File: ImageUtils.java From PrivacyStreams with Apache License 2.0 | 6 votes |
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) public static Bitmap blur(UQI uqi, 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(uqi.getContext()); 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; }
Example 4
Source File: ImageUtils.java From Pasta-for-Spotify with Apache License 2.0 | 6 votes |
public static Bitmap blurBitmap(Context context, Bitmap bitmap) { if (context == null || bitmap == null) return null; Bitmap blurredBitmap; try { blurredBitmap = Bitmap.createBitmap(bitmap); } catch (OutOfMemoryError e) { return null; } RenderScript renderScript = RenderScript.create(context); Allocation input = Allocation.createFromBitmap(renderScript, bitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SCRIPT); Allocation output = Allocation.createTyped(renderScript, input.getType()); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript)); script.setInput(input); script.setRadius(20); script.forEach(output); output.copyTo(blurredBitmap); return blurredBitmap; }
Example 5
Source File: UriGlideRenderer.java From deltachat-android with GNU General Public License v3.0 | 6 votes |
@RequiresApi(17) private static @NonNull Bitmap blur(Bitmap bitmap, Context context) { Point previewSize = scaleKeepingAspectRatio(new Point(bitmap.getWidth(), bitmap.getHeight()), PREVIEW_DIMENSION_LIMIT); Point blurSize = scaleKeepingAspectRatio(new Point(previewSize.x / 2, previewSize.y / 2 ), MAX_BLUR_DIMENSION); Bitmap small = BitmapUtil.createScaledBitmap(bitmap, blurSize.x, blurSize.y); Log.d(TAG, "Bitmap: " + bitmap.getWidth() + "x" + bitmap.getHeight() + ", Blur: " + blurSize.x + "x" + blurSize.y); RenderScript rs = RenderScript.create(context); Allocation input = Allocation.createFromBitmap(rs, small); Allocation output = Allocation.createTyped(rs, input.getType()); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(25f); script.setInput(input); script.forEach(output); Bitmap blurred = Bitmap.createBitmap(small.getWidth(), small.getHeight(), small.getConfig()); output.copyTo(blurred); return blurred; }
Example 6
Source File: FeatureMap.java From rscnn with MIT License | 6 votes |
private static float[][][][] copyFromAllocation(Allocation allocation, int n, int h, int w, int c) { float[] alloc = new float[n * h * w * c]; float[][][][] output = new float[n][h][w][c]; allocation.copyTo(alloc); int count = 0; for(int i=0;i<n;i++){ for(int j=0;j<h;j++){ for(int k=0;k<w;k++){ for(int l=0;l<c;l++){ output[i][j][k][l] = alloc[count++]; } } } } return output; }
Example 7
Source File: BlurTransform.java From android-tv-leanback with Apache License 2.0 | 6 votes |
@Override public Bitmap transform(Bitmap bitmap) { // Create another bitmap that will hold the results of the filter. Bitmap blurredBitmap = Bitmap.createBitmap(bitmap); // Allocate memory for Renderscript to work with Allocation input = Allocation.createFromBitmap(rs, bitmap, 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(20); // Start the ScriptIntrinisicBlur script.forEach(output); // Copy the output to the blurred bitmap output.copyTo(blurredBitmap); bitmap.recycle(); return blurredBitmap; }
Example 8
Source File: Utils.java From Noyze with Apache License 2.0 | 6 votes |
/** * Applies a blur to a {@link Bitmap}. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public static Bitmap fastBlur(Context mContext, Bitmap sentBitmap, final int radius) { if (null == rs) { rs = RenderScript.create(mContext); } final Allocation in = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final Allocation out = Allocation.createTyped(rs, in.getType()); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(radius); script.setInput(in); script.forEach(out); out.copyTo(sentBitmap); return (sentBitmap); }
Example 9
Source File: BlurBitmapUtil.java From NewFastFrame with Apache License 2.0 | 6 votes |
public static Drawable createBlurredImageFromBitmap(Bitmap bitmap, Context context, int inSampleSize) { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { RenderScript rs = RenderScript.create(context); final BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = inSampleSize; ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] imageInByte = stream.toByteArray(); ByteArrayInputStream bis = new ByteArrayInputStream(imageInByte); Bitmap blurTemplate = BitmapFactory.decodeStream(bis, null, options); final Allocation input = Allocation.createFromBitmap(rs, blurTemplate); final Allocation output = Allocation.createTyped(rs, input.getType()); final ScriptIntrinsicBlur script; script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(8f); script.setInput(input); script.forEach(output); output.copyTo(blurTemplate); return new BitmapDrawable(context.getResources(), blurTemplate); } return null; }
Example 10
Source File: BlurTransform.java From android-tv-leanback with Apache License 2.0 | 6 votes |
@Override public Bitmap transform(Bitmap bitmap) { // Create another bitmap that will hold the results of the filter. Bitmap blurredBitmap = Bitmap.createBitmap(bitmap); // Allocate memory for Renderscript to work with Allocation input = Allocation.createFromBitmap(rs, bitmap, 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(20); // Start the ScriptIntrinisicBlur script.forEach(output); // Copy the output to the blurred bitmap output.copyTo(blurredBitmap); bitmap.recycle(); return blurredBitmap; }
Example 11
Source File: UriGlideRenderer.java From mollyim-android with GNU General Public License v3.0 | 6 votes |
private static @NonNull Bitmap blur(Bitmap bitmap, Context context) { Point previewSize = scaleKeepingAspectRatio(new Point(bitmap.getWidth(), bitmap.getHeight()), PREVIEW_DIMENSION_LIMIT); Point blurSize = scaleKeepingAspectRatio(new Point(previewSize.x / 2, previewSize.y / 2 ), MAX_BLUR_DIMENSION); Bitmap small = BitmapUtil.createScaledBitmap(bitmap, blurSize.x, blurSize.y); Log.d(TAG, "Bitmap: " + bitmap.getWidth() + "x" + bitmap.getHeight() + ", Blur: " + blurSize.x + "x" + blurSize.y); RenderScript rs = RenderScript.create(context); Allocation input = Allocation.createFromBitmap(rs, small); Allocation output = Allocation.createTyped(rs, input.getType()); ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(25f); script.setInput(input); script.forEach(output); Bitmap blurred = Bitmap.createBitmap(small.getWidth(), small.getHeight(), small.getConfig()); output.copyTo(blurred); return blurred; }
Example 12
Source File: BlurTransformation.java From AcgClub with MIT License | 5 votes |
private Bitmap doBlur(Context context, Bitmap bitmap, int radius) throws RSRuntimeException { RenderScript rs = null; Allocation input = null; Allocation output = null; ScriptIntrinsicBlur blur = null; try { 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()); blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); blur.setInput(input); blur.setRadius(radius); blur.forEach(output); output.copyTo(bitmap); } finally { if (rs != null) { rs.destroy(); } if (input != null) { input.destroy(); } if (output != null) { output.destroy(); } if (blur != null) { blur.destroy(); } } return bitmap; }
Example 13
Source File: ImageUtils.java From CameraBlur with Apache License 2.0 | 5 votes |
public static Bitmap RenderBlur(Context context, Bitmap image, int BLUR_RADIUS) { Bitmap outputBitmap = Bitmap.createBitmap(image); RenderScript rs = RenderScript.create(context); ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); Allocation tmpIn = Allocation.createFromBitmap(rs, image); Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap); theIntrinsic.setRadius(BLUR_RADIUS); theIntrinsic.setInput(tmpIn); theIntrinsic.forEach(tmpOut); tmpOut.copyTo(outputBitmap); return outputBitmap; }
Example 14
Source File: BlurTransformation.java From MyBookshelf with GNU General Public License v3.0 | 5 votes |
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @Override protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { Bitmap blurredBitmap = toTransform.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(radius); // Start the ScriptIntrinsicBlur //启动 ScriptIntrinsicBlur, script.forEach(output); // Copy the output to the blurred bitmap //将输出复制到模糊的位图 output.copyTo(blurredBitmap); return blurredBitmap; }
Example 15
Source File: BlurTask.java From react-native-blur-overlay with MIT License | 5 votes |
/** * * @param rs RenderScript Context * @param image screenshot bitmap * @param Radius integer between 1 to 24 * @param brightness -255..255 0 is default * @return blurred Bitmap */ private static Bitmap blur(RenderScript rs, Bitmap image, int Radius, float brightness, float factor) { Bitmap outputBitmap; if(Radius > 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { outputBitmap = Bitmap.createBitmap(image.getWidth(),image.getHeight(), Bitmap.Config.ARGB_8888); ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); Allocation tmpIn = Allocation.createFromBitmap(rs, image); Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap); theIntrinsic.setRadius(Radius/factor); theIntrinsic.setInput(tmpIn); theIntrinsic.forEach(tmpOut); tmpOut.copyTo(outputBitmap); } else { outputBitmap = image; } if(brightness!=0){ ColorMatrix cm = new ColorMatrix(new float[] { (float) 1, 0, 0, 0, brightness, 0, (float) 1, 0, 0, brightness, 0, 0, (float) 1, 0, brightness, 0, 0, 0, 1, 0 }); Canvas canvas = new Canvas(outputBitmap); Paint paint = new Paint(); paint.setColorFilter(new ColorMatrixColorFilter(cm)); canvas.drawBitmap(outputBitmap, 0, 0, paint); } return outputBitmap; }
Example 16
Source File: BlurTransformation.java From MusicPlayer with GNU General Public License v3.0 | 4 votes |
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { int sampling; if (this.sampling == 0) { sampling = ImageUtil.calculateInSampleSize(toTransform.getWidth(), toTransform.getHeight(), 100); } else { sampling = this.sampling; } int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap out = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); if (out == null) { out = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(out); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); if (Build.VERSION.SDK_INT >= 17) { try { final RenderScript rs = RenderScript.create(context.getApplicationContext()); final Allocation input = Allocation.createFromBitmap(rs, out, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final Allocation output = Allocation.createTyped(rs, input.getType()); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(blurRadius); script.setInput(input); script.forEach(output); output.copyTo(out); rs.destroy(); return out; } catch (RSRuntimeException e) { // on some devices RenderScript.create() throws: android.support.v8.renderscript.RSRuntimeException: Error loading libRSSupport library if (BuildConfig.DEBUG) e.printStackTrace(); } } return StackBlur.blur(out, blurRadius); }
Example 17
Source File: FullyConnected.java From CNNdroid with MIT License | 4 votes |
private float[][] fullyConnectedLayerInF8OutF1(float[][] inputBlob4, float[] myWeight, float[] myBias, boolean destroy) { // fully connected layer int h_w = myBias.length; int w_w = myWeight.length / h_w; // Calculate sizes. int n_i, c_i; n_i = inputBlob4.length; c_i = inputBlob4[0].length; int c_i_8 = c_i; if (c_i % 8 != 0) c_i_8 = c_i + 8 - c_i % 8; int n_o = n_i; int c_o = h_w; // Initialize the result. float[][] outputBlob = new float[n_o][c_o]; //initialize Renderscript Type inputType, outType; Allocation frameAllocation; Allocation outAllocation; inputType = Type.createX(myRS, Element.F32_4(myRS), n_i * c_i_8 / 4); outType = Type.createX(myRS, Element.F32(myRS), n_o * c_o); frameAllocation = Allocation.createTyped(myRS, inputType); outAllocation = Allocation.createTyped(myRS, outType); myScriptF8.set_c_i(c_i_8); // calculate the result float[] frameMatrix = new float[n_i * c_i_8]; for (int n = 0 ; n < n_i ; n++) for (int i = 0 ; i < c_i_8 ; i++) if (i < c_i) frameMatrix[n * w_w + i] = inputBlob4[n][i]; else frameMatrix[n * w_w + i] = 0; frameAllocation.copyFrom(frameMatrix); myScriptF8.set_In_Blob(frameAllocation); myScriptF8.forEach_root(outAllocation); float[] outMatrix = new float[n_o * c_o]; outAllocation.copyTo(outMatrix); for (int n = 0 ; n < n_i ; n++) for (int c = 0 ; c < c_o ; c++) { outputBlob[n][c] = outMatrix[n * c_o + c]; if (nonLinear) { switch (nonLinearType) { case RectifiedLinearUnit: if (outputBlob[n][c] < 0) outputBlob[n][c] = 0; break; } } } frameAllocation.destroy(); outAllocation.destroy(); inputType.destroy(); outType.destroy(); if (destroy) { myScriptF8.destroy(); myScriptF8 = null; } // return the result return outputBlob; }
Example 18
Source File: BlurTransformation.java From Orin with GNU General Public License v3.0 | 4 votes |
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { int sampling; if (this.sampling == 0) { sampling = ImageUtil.calculateInSampleSize(toTransform.getWidth(), toTransform.getHeight(), 100); } else { sampling = this.sampling; } int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap out = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); if (out == null) { out = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(out); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); if (Build.VERSION.SDK_INT >= 17) { try { final RenderScript rs = RenderScript.create(context.getApplicationContext()); final Allocation input = Allocation.createFromBitmap(rs, out, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final Allocation output = Allocation.createTyped(rs, input.getType()); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(blurRadius); script.setInput(input); script.forEach(output); output.copyTo(out); rs.destroy(); return out; } catch (RSRuntimeException e) { // on some devices RenderScript.create() throws: android.support.v8.renderscript.RSRuntimeException: Error loading libRSSupport library if (BuildConfig.DEBUG) e.printStackTrace(); } } return StackBlur.blur(out, blurRadius); }
Example 19
Source File: ResizeBitmapHelper.java From Hentoid with Apache License 2.0 | 4 votes |
static Bitmap resizeNice(@NonNull final RenderScript rs, final Bitmap src, float xScale, float yScale) { // Calculate gaussian's radius float sigma = (1 / xScale) / (float) Math.PI; // https://android.googlesource.com/platform/frameworks/rs/+/master/cpu_ref/rsCpuIntrinsicBlur.cpp float radius = 2.5f * sigma/* - 1.5f*/; // Works better that way radius = Math.min(25, Math.max(0.0001f, radius)); Timber.d(">> using sigma=%s for xScale=%s => radius=%s", sigma, xScale, radius); // Defensive programming in case the threading/view recycling recycles a bitmap just before that methods is reached if (null == src || src.isRecycled()) return src; Bitmap.Config bitmapConfig = src.getConfig(); int srcWidth = src.getWidth(); int srcHeight = src.getHeight(); int dstWidth = Math.round(srcWidth * xScale); int dstHeight = Math.round(srcHeight * yScale); src.setHasAlpha(false); // Gaussian filter Allocation tmpIn = Allocation.createFromBitmap(rs, src); Allocation tmpFiltered = Allocation.createTyped(rs, tmpIn.getType()); ScriptIntrinsicBlur blurInstrinsic = ScriptIntrinsicBlur.create(rs, tmpIn.getElement()); blurInstrinsic.setRadius(radius); blurInstrinsic.setInput(tmpIn); blurInstrinsic.forEach(tmpFiltered); src.recycle(); tmpIn.destroy(); blurInstrinsic.destroy(); // Resize Bitmap dst = Bitmap.createBitmap(dstWidth, dstHeight, bitmapConfig); Type t = Type.createXY(rs, tmpFiltered.getElement(), dstWidth, dstHeight); Allocation tmpOut = Allocation.createTyped(rs, t); ScriptIntrinsicResize resizeIntrinsic = ScriptIntrinsicResize.create(rs); resizeIntrinsic.setInput(tmpFiltered); resizeIntrinsic.forEach_bicubic(tmpOut); tmpOut.copyTo(dst); tmpFiltered.destroy(); resizeIntrinsic.destroy(); tmpOut.destroy(); /* // Additional sharpen script just in case (WIP) Allocation tmpSharpOut = Allocation.createTyped(rs, t); //ScriptIntrinsicConvolve3x3 sharpen = ScriptIntrinsicConvolve3x3.create(rs, tmpOut.getElement()); ScriptIntrinsicConvolve3x3 sharpen = ScriptIntrinsicConvolve3x3.create(rs, Element.U8_4(rs)); sharpen.setCoefficients(getSharpenCoefficients()); sharpen.setInput(tmpOut); sharpen.forEach(tmpSharpOut); tmpSharpOut.copyTo(dst); tmpOut.destroy(); tmpSharpOut.destroy(); sharpen.destroy(); */ return dst; }
Example 20
Source File: BlurTransformation.java From RetroMusicPlayer with GNU General Public License v3.0 | 4 votes |
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { int sampling; if (this.sampling == 0) { sampling = ImageUtil.calculateInSampleSize(toTransform.getWidth(), toTransform.getHeight(), 100); } else { sampling = this.sampling; } int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap out = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); if (out == null) { out = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(out); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); if (Build.VERSION.SDK_INT >= 17) { try { final RenderScript rs = RenderScript.create(context.getApplicationContext()); final Allocation input = Allocation.createFromBitmap(rs, out, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final Allocation output = Allocation.createTyped(rs, input.getType()); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(blurRadius); script.setInput(input); script.forEach(output); output.copyTo(out); rs.destroy(); return out; } catch (RSRuntimeException e) { // on some devices RenderScript.create() throws: android.support.v8.renderscript.RSRuntimeException: Error loading libRSSupport library if (BuildConfig.DEBUG) e.printStackTrace(); } } return StackBlur.blur(out, blurRadius); }