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、付费专栏及课程。

余额充值