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:
parent
136a5512c0
commit
cfe6dc313a
@ -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
|
||||||
|
@ -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}"
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
@ -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 ->
|
||||||
|
@ -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 + ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user