广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-08 09:04:44 次阅读 稿源:互联网
    广告

    1.放大缩小图片

    代码如下:

    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.获得圆角图片的方法

    代码如下:

    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.获得带倒影的图片方法

    代码如下:

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

    4.将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;
    }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告