1
0
mirror of https://github.com/wasabeef/glide-transformations.git synced 2025-06-10 00:24:36 +08:00

Added the DownSampling to BlurTransformation

This commit is contained in:
wasabeef 2015-07-24 18:00:07 +09:00
parent 136a5512c0
commit cfe6dc313a
7 changed files with 45 additions and 26 deletions

View File

@ -5,8 +5,8 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.android.tools.build:gradle:1.3.0-beta4'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

View File

@ -53,8 +53,8 @@ def getKeyAliasPasswordProperty() {
dependencies { dependencies {
compile project(':transformations') compile project(':transformations')
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.2.3' compile "com.github.bumptech.glide:glide:${GLIDE_VERSION}"
compile 'com.android.support:appcompat-v7:22.2.0' compile "jp.co.cyberagent.android.gpuimage:gpuimage-library:${GPUIMAGE_VERSION}"
compile 'com.android.support:recyclerview-v7:22.2.0' compile "com.android.support:appcompat-v7:${SUPPORT_PACKAGE_VERSION}"
compile 'com.github.bumptech.glide:glide:3.6.1' compile "com.android.support:recyclerview-v7:${SUPPORT_PACKAGE_VERSION}"
} }

View File

@ -81,7 +81,7 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
@Override @Override
public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) { public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
Transformation<Bitmap> transformation = null; Transformation transformation = null;
switch (mDataSet.get(position)) { switch (mDataSet.get(position)) {
case CropTop: case CropTop:
transformation = transformation =
@ -110,7 +110,7 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
transformation = new RoundedCornersTransformation(mPool, 100, 0); transformation = new RoundedCornersTransformation(mPool, 100, 0);
break; break;
case Blur: case Blur:
transformation = new BlurTransformation(mContext, mPool, 10); transformation = new BlurTransformation(mContext, mPool, 25, 1);
break; break;
case Toon: case Toon:
transformation = new ToonFilterTransformation(mContext, mPool); transformation = new ToonFilterTransformation(mContext, mPool);

View File

@ -6,11 +6,10 @@
<ImageView <ImageView
android:id="@+id/image" android:id="@+id/image"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:contentDescription="@null" android:contentDescription="@null"/>
android:src="@drawable/demo"/>
<TextView <TextView
android:id="@+id/title" android:id="@+id/title"

View File

@ -1,5 +1,5 @@
VERSION_NAME=1.0.7 VERSION_NAME=1.0.8
VERSION_CODE=7 VERSION_CODE=8
GROUP=jp.wasabeef GROUP=jp.wasabeef
ARTIFACT_ID=glide-transformations ARTIFACT_ID=glide-transformations
@ -22,3 +22,7 @@ POM_DEVELOPER_NAME=Wasabeef
POM_DEVELOPER_EMAIL=dadadada.chop@gmail.com POM_DEVELOPER_EMAIL=dadadada.chop@gmail.com
POM_DEVELOPER_URL=wasabeef.jp POM_DEVELOPER_URL=wasabeef.jp
ISSUE_URL=https://github.com/wasabeef/glide-transformations/issues ISSUE_URL=https://github.com/wasabeef/glide-transformations/issues
SUPPORT_PACKAGE_VERSION=22.2.1
GLIDE_VERSION=3.6.1
GPUIMAGE_VERSION=1.2.3

View File

@ -15,9 +15,8 @@ android {
} }
dependencies { dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) compile "com.github.bumptech.glide:glide:${GLIDE_VERSION}"
compile 'com.github.bumptech.glide:glide:3.6.1' compile "jp.co.cyberagent.android.gpuimage:gpuimage-library:${GPUIMAGE_VERSION}"
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.2.3'
} }
android.libraryVariants.all { variant -> android.libraryVariants.all { variant ->

View File

@ -24,27 +24,36 @@ import com.bumptech.glide.load.resource.bitmap.BitmapResource;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.RenderScript; import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicBlur; import android.support.v8.renderscript.ScriptIntrinsicBlur;
public class BlurTransformation implements Transformation<Bitmap> { public class BlurTransformation implements Transformation<Bitmap> {
private static int MAX_RADIUS = 25; private static int MAX_RADIUS = 25;
private static int DEFAULT_DOWN_SAMPLING = 1;
private Context mContext; private Context mContext;
private BitmapPool mBitmapPool; private BitmapPool mBitmapPool;
private int mRadius; private int mRadius;
private int mSampling;
public BlurTransformation(Context context, BitmapPool pool) { public BlurTransformation(Context context, BitmapPool pool) {
this(context, pool, MAX_RADIUS); this(context, pool, MAX_RADIUS, DEFAULT_DOWN_SAMPLING);
} }
public BlurTransformation(Context context, BitmapPool pool, int radius) { public BlurTransformation(Context context, BitmapPool pool, int radius) {
this(context, pool, radius, DEFAULT_DOWN_SAMPLING);
}
public BlurTransformation(Context context, BitmapPool pool, int radius, int sampling) {
mContext = context; mContext = context;
mBitmapPool = pool; mBitmapPool = pool;
mRadius = radius; mRadius = radius;
mSampling = sampling;
} }
@Override @Override
@ -53,22 +62,30 @@ public class BlurTransformation implements Transformation<Bitmap> {
int width = source.getWidth(); int width = source.getWidth();
int height = source.getHeight(); int height = source.getHeight();
int scaledWidth = width / mSampling;
int scaledHeight = height / mSampling;
Bitmap bitmap = mBitmapPool.get(width, height, Bitmap.Config.ARGB_8888); Bitmap bitmap = mBitmapPool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
if (bitmap == null) { if (bitmap == null) {
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
} }
Canvas canvas = new Canvas(bitmap); Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(source, 0, 0, null); canvas.scale(1 / (float) mSampling, 1 / (float) mSampling);
Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(source, 0, 0, paint);
RenderScript rs = RenderScript.create(mContext); RenderScript rs = RenderScript.create(mContext);
Allocation overlayAlloc = Allocation.createFromBitmap(rs, bitmap); Allocation input = Allocation.createFromBitmap(rs, bitmap,
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement()); Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
blur.setInput(overlayAlloc); Allocation output = Allocation.createTyped(rs, input.getType());
ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
blur.setInput(input);
blur.setRadius(mRadius); blur.setRadius(mRadius);
blur.forEach(overlayAlloc); blur.forEach(output);
overlayAlloc.copyTo(bitmap); output.copyTo(bitmap);
rs.destroy(); rs.destroy();
@ -77,6 +94,6 @@ public class BlurTransformation implements Transformation<Bitmap> {
@Override @Override
public String getId() { public String getId() {
return "BlurTransformation(radius=" + mRadius + ")"; return "BlurTransformation(radius=" + mRadius + ", sampling=" + mSampling + ")";
} }
} }