1
0
mirror of https://github.com/wasabeef/glide-transformations.git synced 2025-06-07 23:04:06 +08:00

setCanvasBitmapDensity (#147)

This commit is contained in:
VeCharm 2019-08-15 11:05:57 +08:00 committed by Daichi Furiya
parent 783d69c579
commit e16eda6af1
8 changed files with 37 additions and 19 deletions

View File

@ -58,8 +58,12 @@ public abstract class BitmapTransformation implements Transformation<Bitmap> {
return result; return result;
} }
protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, void setCanvasBitmapDensity(@NonNull Bitmap toTransform, @NonNull Bitmap canvasBitmap) {
@NonNull Bitmap toTransform, int outWidth, int outHeight); canvasBitmap.setDensity(toTransform.getDensity());
}
protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool,
@NonNull Bitmap toTransform, int outWidth, int outHeight);
@Override @Override
public abstract void updateDiskCacheKey(@NonNull MessageDigest messageDigest); public abstract void updateDiskCacheKey(@NonNull MessageDigest messageDigest);

View File

@ -64,6 +64,8 @@ public class BlurTransformation extends BitmapTransformation {
Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
setCanvasBitmapDensity(toTransform,bitmap);
Canvas canvas = new Canvas(bitmap); Canvas canvas = new Canvas(bitmap);
canvas.scale(1 / (float) sampling, 1 / (float) sampling); canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint(); Paint paint = new Paint();

View File

@ -51,11 +51,13 @@ public class ColorFilterTransformation extends BitmapTransformation {
toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888; toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888;
Bitmap bitmap = pool.get(width, height, config); Bitmap bitmap = pool.get(width, height, config);
Canvas canvas = new Canvas(bitmap); setCanvasBitmapDensity(toTransform, bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true); Canvas canvas = new Canvas(bitmap);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); Paint paint = new Paint();
canvas.drawBitmap(toTransform, 0, 0, paint); paint.setAntiAlias(true);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(toTransform, 0, 0, paint);
return bitmap; return bitmap;
} }

View File

@ -76,6 +76,8 @@ public class CropTransformation extends BitmapTransformation {
float top = getTop(scaledHeight); float top = getTop(scaledHeight);
RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight);
setCanvasBitmapDensity(toTransform,bitmap);
Canvas canvas = new Canvas(bitmap); Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(toTransform, null, targetRect, null); canvas.drawBitmap(toTransform, null, targetRect, null);

View File

@ -45,6 +45,8 @@ public class GrayscaleTransformation extends BitmapTransformation {
toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888; toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888;
Bitmap bitmap = pool.get(width, height, config); Bitmap bitmap = pool.get(width, height, config);
setCanvasBitmapDensity(toTransform,bitmap);
Canvas canvas = new Canvas(bitmap); Canvas canvas = new Canvas(bitmap);
ColorMatrix saturation = new ColorMatrix(); ColorMatrix saturation = new ColorMatrix();
saturation.setSaturation(0f); saturation.setSaturation(0f);

View File

@ -64,6 +64,8 @@ public class MaskTransformation extends BitmapTransformation {
Drawable mask = Utils.getMaskDrawable(context.getApplicationContext(), maskId); Drawable mask = Utils.getMaskDrawable(context.getApplicationContext(), maskId);
setCanvasBitmapDensity(toTransform,bitmap);
Canvas canvas = new Canvas(bitmap); Canvas canvas = new Canvas(bitmap);
mask.setBounds(0, 0, width, height); mask.setBounds(0, 0, width, height);
mask.draw(canvas); mask.draw(canvas);

View File

@ -68,13 +68,15 @@ public class RoundedCornersTransformation extends BitmapTransformation {
Bitmap bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888); Bitmap bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888);
bitmap.setHasAlpha(true); bitmap.setHasAlpha(true);
Canvas canvas = new Canvas(bitmap); setCanvasBitmapDensity(toTransform, bitmap);
Paint paint = new Paint();
paint.setAntiAlias(true); Canvas canvas = new Canvas(bitmap);
paint.setShader(new BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); Paint paint = new Paint();
drawRoundRect(canvas, paint, width, height); paint.setAntiAlias(true);
return bitmap; paint.setShader(new BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
} drawRoundRect(canvas, paint, width, height);
return bitmap;
}
private void drawRoundRect(Canvas canvas, Paint paint, float width, float height) { private void drawRoundRect(Canvas canvas, Paint paint, float width, float height) {
float right = width - margin; float right = width - margin;

View File

@ -67,11 +67,13 @@ public class SupportRSBlurTransformation extends BitmapTransformation {
Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap); setCanvasBitmapDensity(toTransform, bitmap);
canvas.scale(1 / (float) sampling, 1 / (float) sampling);
Paint paint = new Paint(); Canvas canvas = new Canvas(bitmap);
paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.scale(1 / (float) sampling, 1 / (float) sampling);
canvas.drawBitmap(toTransform, 0, 0, paint); Paint paint = new Paint();
paint.setFlags(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(toTransform, 0, 0, paint);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
try { try {