首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

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

2012-08-17 
Android 图像处理(类型转换,比例缩放,倒影,圆角)??/*** 1.放大缩小图片** @param bitmap* @param w* @para

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

?

?

/**  * 1.放大缩小图片  *   * @param bitmap  * @param w  * @param h  * @return  */  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.获得圆角图片的方法  *   * @param bitmap  * @param roundPx  * @return  */  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.获得带倒影的图片方法  *   * @param bitmap  * @return  */  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  *   * @param drawable  * @return  */  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;  }  

?

?

?

热点排行