1
0
mirror of https://github.com/wasabeef/glide-transformations.git synced 2025-06-09 16:14:09 +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()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.android.tools.build:gradle:1.3.0-beta4'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
VERSION_NAME=1.0.7
VERSION_CODE=7
VERSION_NAME=1.0.8
VERSION_CODE=8
GROUP=jp.wasabeef
ARTIFACT_ID=glide-transformations
@ -22,3 +22,7 @@ POM_DEVELOPER_NAME=Wasabeef
POM_DEVELOPER_EMAIL=dadadada.chop@gmail.com
POM_DEVELOPER_URL=wasabeef.jp
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 {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.2.3'
compile "com.github.bumptech.glide:glide:${GLIDE_VERSION}"
compile "jp.co.cyberagent.android.gpuimage:gpuimage-library:${GPUIMAGE_VERSION}"
}
android.libraryVariants.all { variant ->

View File

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