美文网首页
Android 图片处理,缩放、Drawable->Bitmap

Android 图片处理,缩放、Drawable->Bitmap

作者: WeekDiffculty | 来源:发表于2017-03-01 12:00 被阅读0次

    //放大缩小图片

    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;  
      }  
    

    //将Drawable转化为Bitmap

         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;  
                  
            }  
    

    //获得圆角图片的方法

      public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){
    
           Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                   .getHeight(), Bitmap.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(PorterDuff.Mode.SRC_IN));
           canvas.drawBitmap(bitmap, rect, rect, paint);
    
           return output;
       }
    

    //获得带倒影的图片方法

        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, 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;  
        }  
    

    相关文章

      网友评论

          本文标题:Android 图片处理,缩放、Drawable->Bitmap

          本文链接:https://www.haomeiwen.com/subject/nhwzwttx.html