From e16eda6af1c5327f2b17c447d2154b6da118b1e3 Mon Sep 17 00:00:00 2001 From: VeCharm Date: Thu, 15 Aug 2019 11:05:57 +0800 Subject: [PATCH] setCanvasBitmapDensity (#147) --- .../transformations/BitmapTransformation.java | 8 ++++++-- .../transformations/BlurTransformation.java | 2 ++ .../ColorFilterTransformation.java | 12 +++++++----- .../transformations/CropTransformation.java | 2 ++ .../transformations/GrayscaleTransformation.java | 2 ++ .../transformations/MaskTransformation.java | 2 ++ .../RoundedCornersTransformation.java | 16 +++++++++------- .../SupportRSBlurTransformation.java | 12 +++++++----- 8 files changed, 37 insertions(+), 19 deletions(-) diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/BitmapTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/BitmapTransformation.java index 77b3853..17615e0 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/BitmapTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/BitmapTransformation.java @@ -58,8 +58,12 @@ public abstract class BitmapTransformation implements Transformation { return result; } - protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, - @NonNull Bitmap toTransform, int outWidth, int outHeight); + void setCanvasBitmapDensity(@NonNull Bitmap toTransform, @NonNull Bitmap canvasBitmap) { + canvasBitmap.setDensity(toTransform.getDensity()); + } + + protected abstract Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, + @NonNull Bitmap toTransform, int outWidth, int outHeight); @Override public abstract void updateDiskCacheKey(@NonNull MessageDigest messageDigest); diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java index c0742cf..14ec0ad 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/BlurTransformation.java @@ -64,6 +64,8 @@ public class BlurTransformation extends BitmapTransformation { Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); + setCanvasBitmapDensity(toTransform,bitmap); + Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/ColorFilterTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/ColorFilterTransformation.java index 9bd3e30..a71d0cf 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/ColorFilterTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/ColorFilterTransformation.java @@ -51,11 +51,13 @@ public class ColorFilterTransformation extends BitmapTransformation { toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888; Bitmap bitmap = pool.get(width, height, config); - Canvas canvas = new Canvas(bitmap); - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); - canvas.drawBitmap(toTransform, 0, 0, paint); + setCanvasBitmapDensity(toTransform, bitmap); + + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP)); + canvas.drawBitmap(toTransform, 0, 0, paint); return bitmap; } diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/CropTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/CropTransformation.java index dcb4cf1..41a87be 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/CropTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/CropTransformation.java @@ -76,6 +76,8 @@ public class CropTransformation extends BitmapTransformation { float top = getTop(scaledHeight); RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); + setCanvasBitmapDensity(toTransform,bitmap); + Canvas canvas = new Canvas(bitmap); canvas.drawBitmap(toTransform, null, targetRect, null); diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/GrayscaleTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/GrayscaleTransformation.java index 07e0f70..4e99251 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/GrayscaleTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/GrayscaleTransformation.java @@ -45,6 +45,8 @@ public class GrayscaleTransformation extends BitmapTransformation { toTransform.getConfig() != null ? toTransform.getConfig() : Bitmap.Config.ARGB_8888; Bitmap bitmap = pool.get(width, height, config); + setCanvasBitmapDensity(toTransform,bitmap); + Canvas canvas = new Canvas(bitmap); ColorMatrix saturation = new ColorMatrix(); saturation.setSaturation(0f); diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/MaskTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/MaskTransformation.java index 7f350a8..083a75d 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/MaskTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/MaskTransformation.java @@ -64,6 +64,8 @@ public class MaskTransformation extends BitmapTransformation { Drawable mask = Utils.getMaskDrawable(context.getApplicationContext(), maskId); + setCanvasBitmapDensity(toTransform,bitmap); + Canvas canvas = new Canvas(bitmap); mask.setBounds(0, 0, width, height); mask.draw(canvas); diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/RoundedCornersTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/RoundedCornersTransformation.java index 6f3e362..4a0a4d9 100755 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/RoundedCornersTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/RoundedCornersTransformation.java @@ -68,13 +68,15 @@ public class RoundedCornersTransformation extends BitmapTransformation { Bitmap bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888); bitmap.setHasAlpha(true); - Canvas canvas = new Canvas(bitmap); - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setShader(new BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)); - drawRoundRect(canvas, paint, width, height); - return bitmap; - } + setCanvasBitmapDensity(toTransform, bitmap); + + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + paint.setAntiAlias(true); + 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) { float right = width - margin; diff --git a/transformations/src/main/java/jp/wasabeef/glide/transformations/SupportRSBlurTransformation.java b/transformations/src/main/java/jp/wasabeef/glide/transformations/SupportRSBlurTransformation.java index 0f737d9..3ed6b02 100644 --- a/transformations/src/main/java/jp/wasabeef/glide/transformations/SupportRSBlurTransformation.java +++ b/transformations/src/main/java/jp/wasabeef/glide/transformations/SupportRSBlurTransformation.java @@ -67,11 +67,13 @@ public class SupportRSBlurTransformation extends BitmapTransformation { Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.scale(1 / (float) sampling, 1 / (float) sampling); - Paint paint = new Paint(); - paint.setFlags(Paint.FILTER_BITMAP_FLAG); - canvas.drawBitmap(toTransform, 0, 0, paint); + setCanvasBitmapDensity(toTransform, bitmap); + + Canvas canvas = new Canvas(bitmap); + 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 >= Build.VERSION_CODES.JELLY_BEAN_MR2) { try {