| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
123bt
10年前发布

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

import android.graphics.Bitmap;  import android.graphics.Bitmap.Config;  import android.graphics.Canvas;  import android.graphics.LinearGradient;  import android.graphics.Matrix;  import android.graphics.Paint;  import android.graphics.PorterDuff.Mode;  import android.graphics.PorterDuffXfermode;  import android.graphics.Rect;  import android.graphics.RectF;  import android.graphics.Shader.TileMode;     /**   * 图片处理工具类(缩放,圆角,倒影)   *   */  public class ImageUtils {      /**       * 图片缩放       *       * @param pBitmap       * @param pW       * @param pH       * @return       */      public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {             int _width = pBitmap.getWidth();// 获取原图的宽          int _heigth = pBitmap.getHeight();// 获取原图的高             // 获取缩放比          float _ScaleW = (float) pW / _width;          float _ScaleH = (float) pH / _heigth;             Matrix _Matrix = new Matrix();// 创建Matrix矩阵对象             _Matrix.setScale(_ScaleW, _ScaleH);// 设置宽高的缩放比             return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,                  true);// 对截原图的0,0坐标到_width,_heigth的图片进行_Matrix处理      }         /**       * 图片圆角       *       * @param pBitmap       * @param pRoundpx       * @return       */      public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {             Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),                  pBitmap.getHeight(), Config.ARGB_8888); // 创建图片画布大小          Canvas _Canvas = new Canvas(_NewBitmap); // 创建画布          _Canvas.drawARGB(0, 0, 0, 0); // 设置画布透明          Paint _Paint = new Paint(); // 创建画笔          _Paint.setAntiAlias(true); // 抗锯齿          _Paint.setColor(0xff000000);// 画笔颜色透明             // 画与原图片大小一致的圆角矩形          Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight());          RectF _RectF = new RectF(_Rect);          _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);             _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置下面张图片与上面张图片的交互模式          _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);// 画原图到画布          return _NewBitmap;      }         /**       * 图片倒影       *       * @param pBitmap       * @return       */      public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) {          // 创建等宽,高+高/5的画布          Bitmap _NewBitmap = Bitmap                  .createBitmap(pBitmap.getWidth(),                          pBitmap.getHeight() + pBitmap.getHeight() / 5,                          Config.ARGB_8888);          Canvas _Canvas = new Canvas(_NewBitmap);             _Canvas.drawBitmap(pBitmap, 0, 0, null);// 画上原图             // 原图翻转,          Matrix _Matrix = new Matrix();          _Matrix.preScale(1, -1);          Bitmap _Bitmap = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(),                  pBitmap.getHeight(), _Matrix, true);             // 在剩余画布上画上翻转图          _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null);          Paint _Paint = new Paint();             // 实现图片的渐变效果          LinearGradient shader = new LinearGradient(0, pBitmap.getHeight(), 0,                  _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);          _Paint.setShader(shader);          _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));          _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(),                  _NewBitmap.getHeight(), _Paint);          return _NewBitmap;      }     }