[Java] 图片处理工具类(缩放,圆角,倒影) →→→→→进入此内容的聊天室

来自 , 2020-01-14, 写在 Java, 查看 117 次.
URL http://www.code666.cn/view/2b8a6159
  1. package com.demo;
  2.  
  3. import android.graphics.Bitmap;
  4. import android.graphics.Bitmap.Config;
  5. import android.graphics.Canvas;
  6. import android.graphics.LinearGradient;
  7. import android.graphics.Matrix;
  8. import android.graphics.Paint;
  9. import android.graphics.PorterDuff.Mode;
  10. import android.graphics.PorterDuffXfermode;
  11. import android.graphics.Rect;
  12. import android.graphics.RectF;
  13. import android.graphics.Shader.TileMode;
  14.  
  15. /**
  16.  * 图片处理工具类(缩放,圆角,倒影)
  17.  *
  18.  */
  19. public class ImageUtils {
  20.         /**
  21.          * 图片缩放
  22.          *
  23.          * @param pBitmap
  24.          * @param pW
  25.          * @param pH
  26.          * @return
  27.          */
  28.         public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {
  29.  
  30.                 int _width = pBitmap.getWidth();// 获取原图的宽
  31.                 int _heigth = pBitmap.getHeight();// 获取原图的高
  32.  
  33.                 // 获取缩放比
  34.                 float _ScaleW = (float) pW / _width;
  35.                 float _ScaleH = (float) pH / _heigth;
  36.  
  37.                 Matrix _Matrix = new Matrix();// 创建Matrix矩阵对象
  38.  
  39.                 _Matrix.setScale(_ScaleW, _ScaleH);// 设置宽高的缩放比
  40.  
  41.                 return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,
  42.                                 true);// 对截原图的0,0坐标到_width,_heigth的图片进行_Matrix处理
  43.         }
  44.  
  45.         /**
  46.          * 图片圆角
  47.          *
  48.          * @param pBitmap
  49.          * @param pRoundpx
  50.          * @return
  51.          */
  52.         public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {
  53.  
  54.                 Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),
  55.                                 pBitmap.getHeight(), Config.ARGB_8888); // 创建图片画布大小
  56.                 Canvas _Canvas = new Canvas(_NewBitmap); // 创建画布
  57.                 _Canvas.drawARGB(0, 0, 0, 0); // 设置画布透明
  58.                 Paint _Paint = new Paint(); // 创建画笔
  59.                 _Paint.setAntiAlias(true); // 抗锯齿
  60.                 _Paint.setColor(0xff000000);// 画笔颜色透明
  61.  
  62.                 // 画与原图片大小一致的圆角矩形
  63.                 Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight());
  64.                 RectF _RectF = new RectF(_Rect);
  65.                 _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);
  66.  
  67.                 _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置下面张图片与上面张图片的交互模式
  68.                 _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);// 画原图到画布
  69.                 return _NewBitmap;
  70.         }
  71.  
  72.         /**
  73.          * 图片倒影
  74.          *
  75.          * @param pBitmap
  76.          * @return
  77.          */
  78.         public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) {
  79.                 // 创建等宽,高+高/5的画布
  80.                 Bitmap _NewBitmap = Bitmap
  81.                                 .createBitmap(pBitmap.getWidth(),
  82.                                                 pBitmap.getHeight() + pBitmap.getHeight() / 5,
  83.                                                 Config.ARGB_8888);
  84.                 Canvas _Canvas = new Canvas(_NewBitmap);
  85.  
  86.                 _Canvas.drawBitmap(pBitmap, 0, 0, null);// 画上原图
  87.  
  88.                 // 原图翻转,
  89.                 Matrix _Matrix = new Matrix();
  90.                 _Matrix.preScale(1, -1);
  91.                 Bitmap _Bitmap = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(),
  92.                                 pBitmap.getHeight(), _Matrix, true);
  93.  
  94.                 // 在剩余画布上画上翻转图
  95.                 _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null);
  96.                 Paint _Paint = new Paint();
  97.  
  98.                 // 实现图片的渐变效果
  99.                 LinearGradient shader = new LinearGradient(0, pBitmap.getHeight(), 0,
  100.                                 _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
  101.                 _Paint.setShader(shader);
  102.                 _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
  103.                 _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(),
  104.                                 _NewBitmap.getHeight(), _Paint);
  105.                 return _NewBitmap;
  106.         }
  107.  
  108. }
  109.  

回复 "图片处理工具类(缩放,圆角,倒影)"

这儿你可以回复上面这条便签

captcha