Android 图像处理(类型转换,比例缩放,倒影,圆角)

1.放大缩小图片

 

1
2
3
4
5
6
7
8
9
10
public  static  Bitmap zoomBitmap(Bitmap bitmap, int  w, int  h){  
         int  width = bitmap.getWidth();  
         int  height = bitmap.getHeight();  
         Matrix matrix = new  Matrix();  
         float  scaleWidht = (( float )w / width);  
         float  scaleHeight = (( float )h / height);  
         matrix.postScale(scaleWidht, scaleHeight);  
         Bitmap newbmp = Bitmap.createBitmap(bitmap, 0 , 0 , width, height, matrix, true );  
         return  newbmp;  
    

2.获得圆角图片的方法

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public  static  Bitmap getRoundedCornerBitmap(Bitmap bitmap, float  roundPx){  
            
         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);  
         Canvas canvas = new  Canvas(output);  
     
         final  int  color = 0xff424242 ;  
         final  Paint paint = new  Paint();  
         final  Rect rect = new  Rect( 0 , 0 , bitmap.getWidth(), bitmap.getHeight());  
         final  RectF rectF = new  RectF(rect);  
     
         paint.setAntiAlias( true );  
         canvas.drawARGB( 0 , 0 , 0 , 0 );  
         paint.setColor(color);  
         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
     
         paint.setXfermode( new  PorterDuffXfermode(Mode.SRC_IN));  
         canvas.drawBitmap(bitmap, rect, rect, paint);  
     
         return  output;  
    

3.获得带倒影的图片方法 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  static  Bitmap createReflectionImageWithOrigin(Bitmap bitmap){  
        final  int  reflectionGap = 4 ;  
        int  width = bitmap.getWidth();  
        int  height = bitmap.getHeight();  
           
        Matrix matrix = new  Matrix();  
        matrix.preScale( 1 , - 1 );  
           
        Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0 , height/ 2 , width, height/ 2 , matrix, false );  
           
        Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/ 2 ), Config.ARGB_8888);  
           
        Canvas canvas = new  Canvas(bitmapWithReflection);  
        canvas.drawBitmap(bitmap, 0 , 0 , null );  
        Paint deafalutPaint = new  Paint();  
        canvas.drawRect( 0 , height,width,height + reflectionGap, deafalutPaint);  
           
        canvas.drawBitmap(reflectionImage, 0 , height + reflectionGap, null );  
           
        Paint paint = new  Paint();  
        LinearGradient shader = new  LinearGradient( 0 , bitmap.getHeight(), 0 ,
1
2
3
4
5
6
7
8
9
10
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff , 0x00ffffff , TileMode.CLAMP);  
     paint.setShader(shader);  
     // Set the Transfer mode to be porter duff and destination in  
     paint.setXfermode( new  PorterDuffXfermode(Mode.DST_IN));  
     // Draw a rectangle using the paint with our linear gradient  
     canvas.drawRect( 0 , height, width, bitmapWithReflection.getHeight()  
             + reflectionGap, paint);  
 
     return  bitmapWithReflection;  
}  

 

 

4.将Drawable转化为Bitmap

1
2
3
4
5
6
7
8
9
10
public  static  Bitmap drawableToBitmap(Drawable drawable){
       int  width = drawable.getIntrinsicWidth();
       int  height = drawable.getIntrinsicHeight();
       Bitmap bitmap = Bitmap.createBitmap(width, height,
       drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
       Canvas canvas = new  Canvas(bitmap);
       drawable.setBounds( 0 , 0 ,width,height);
       drawable.draw(canvas);
       return  bitmap;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值