`

Android平台上实现图片的缩放,圆角,倒影效果

 
阅读更多

主要包含了 放大缩小 圆角图片 和 倒影 

Java代码   收藏代码
  1. package com.lp.imageUI;  
  2.   
  3. import android.graphics.Bitmap;  
  4. import android.graphics.Canvas;  
  5. import android.graphics.LinearGradient;  
  6. import android.graphics.Matrix;  
  7. import android.graphics.Paint;  
  8. import android.graphics.PixelFormat;  
  9. import android.graphics.PorterDuffXfermode;  
  10. import android.graphics.Rect;  
  11. import android.graphics.RectF;  
  12. import android.graphics.Bitmap.Config;  
  13. import android.graphics.PorterDuff.Mode;  
  14. import android.graphics.Shader.TileMode;  
  15. import android.graphics.drawable.Drawable;  
  16. public class ImageUtil {  
  17.       
  18.     //放大缩小图片  
  19.     public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){  
  20.         int width = bitmap.getWidth();  
  21.         int height = bitmap.getHeight();  
  22.         Matrix matrix = new Matrix();  
  23.         float scaleWidht = ((float)w / width);  
  24.         float scaleHeight = ((float)h / height);  
  25.         matrix.postScale(scaleWidht, scaleHeight);  
  26.         Bitmap newbmp = Bitmap.createBitmap(bitmap, 00, width, height, matrix, true);  
  27.         return newbmp;  
  28.     }  
  29.     //将Drawable转化为Bitmap  
  30.      public static Bitmap drawableToBitmap(Drawable drawable){  
  31.             int width = drawable.getIntrinsicWidth();  
  32.             int height = drawable.getIntrinsicHeight();  
  33.             Bitmap bitmap = Bitmap.createBitmap(width, height,  
  34.                     drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
  35.                             : Bitmap.Config.RGB_565);  
  36.             Canvas canvas = new Canvas(bitmap);  
  37.             drawable.setBounds(0,0,width,height);  
  38.             drawable.draw(canvas);  
  39.             return bitmap;  
  40.               
  41.         }  
  42.        
  43.      //获得圆角图片的方法  
  44.     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){  
  45.           
  46.         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap  
  47.                 .getHeight(), Config.ARGB_8888);  
  48.         Canvas canvas = new Canvas(output);  
  49.    
  50.         final int color = 0xff424242;  
  51.         final Paint paint = new Paint();  
  52.         final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());  
  53.         final RectF rectF = new RectF(rect);  
  54.    
  55.         paint.setAntiAlias(true);  
  56.         canvas.drawARGB(0000);  
  57.         paint.setColor(color);  
  58.         /** 
  59.          * 画一个圆角矩形 
  60.          * rectF: 矩形 
  61.          * roundPx 圆角在x轴上或y轴上的半径 
  62.          */  
  63.         canvas.drawRoundRect(rectF, roundPx, roundPx+10, paint);  
  64.         //设置两张图片相交时的模式  
  65.         //setXfermode前的是 dst 之后的是src  
  66.         //在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。   
  67.         //如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;  
  68.         //PorterDuffXfermode就可以来解决这个问题  
  69.         //canvas原有的图片 可以理解为背景 就是dst  
  70.         //新画上去的图片 可以理解为前景 就是src  
  71. //      paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));  
  72.         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
  73.         canvas.drawBitmap(bitmap, rect, rect, paint);  
  74.    
  75.         return output;  
  76.     }  
  77.     //获得带倒影的图片方法  
  78.     public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){  
  79.         // 图片与倒影间隔距离    
  80.         final int reflectionGap = 4;  
  81.         // 图片的宽度    
  82.         int width = bitmap.getWidth();  
  83.          // 图片的高度    
  84.         int height = bitmap.getHeight();  
  85.           
  86.         Matrix matrix = new Matrix();  
  87.         // 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转  
  88.         matrix.preScale(1, -1);  
  89.         // 创建反转后的图片Bitmap对象,图片高是原图的一半。    
  90.         Bitmap reflectionImage = Bitmap.createBitmap(bitmap,   
  91.                 0, height/2, width, height/2, matrix, false);  
  92.         // 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。 可以理解为这张图将会在屏幕上显示 是原图和倒影的合体    
  93.         Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);  
  94.          // 构造函数传入Bitmap对象,为了在图片上画图    
  95.         Canvas canvas = new Canvas(bitmapWithReflection);  
  96.         // 画原始图片    
  97.         canvas.drawBitmap(bitmap, 00null);  
  98.         // 画间隔矩形    
  99.         Paint deafalutPaint = new Paint();  
  100.         canvas.drawRect(0, height,width,height + reflectionGap,  
  101.                 deafalutPaint);  
  102.         // 画倒影图片    
  103.         canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);  
  104.         // 实现倒影渐变效果    
  105.         Paint paint = new Paint();  
  106.         LinearGradient shader = new LinearGradient(0,  
  107.                 bitmap.getHeight(), 0, bitmapWithReflection.getHeight()  
  108.                 + reflectionGap, 0x70ffffff0x00ffffff, TileMode.CLAMP);  
  109.         paint.setShader(shader);  
  110.           
  111.         // Set the Transfer mode to be porter duff and destination in  
  112.         // 覆盖效果    
  113.         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
  114.         // Draw a rectangle using the paint with our linear gradient  
  115.         canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()  
  116.                 + reflectionGap, paint);  
  117.    
  118.         return bitmapWithReflection;  
  119.     }  
  120.       
  121. }  



圆角和倒影的效果如图: 

 
<!--EndFragment-->

分享到:
评论

相关推荐

    Android图片各种处理效果源码

    Android图片效果: "图片缩放", "图片圆角", "图片倒影", "旋转图片", "图片反转", "图片色调饱和度、色相、亮度处理", "涂鸦,水印", "图片上写文字", "怀旧效果", "模糊效果" ,"柔化效果(高斯模糊)", "浮雕效果...

    Android开发中常用的功能

    "Android实现图表绘制和展示","断点续传下载","常用Intent.Action","图片缩放圆角倒影Bitmap/Drawable转换", "SlidingDrawer抽屉效果","Android顶部与底部菜单","GroupActivity测试","Android平台水波效果源码",...

    安卓系列毕设:Android图片处理合集

    "图片缩放", "图片圆角", "图片倒影", "旋转图片", "图片反转", "图片色调饱和度、色相、亮度处理", "涂鸦,水印", "图片上写文字", "怀旧效果","模糊效果" ,"柔化效果(高斯模糊)", "浮雕效果", "锐化效果", "底片...

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

    Android 图像处理(类型转换,比例缩放,倒影,圆角)的小例子,需要的朋友可以参考一下

    图片的各种效果的处理

    图片缩放,图片的圆角,图片倒影,旋转图片,图片反转,图片色彩饱和度亮度处理,图片写字,怀旧图片风格,模糊图片效果,浮雕效果,锐化效果,底片效果,光照效果,素描,图像裁剪。。。效果的实现

    android 图片工具

    集成android 圆角,灰度,倒影,缩放,剪切,水印,合成等工具

    android几种图形特效

    android几种图形特效,包括图片的圆角,图片的缩放,图片的倒影,图片的旋转等

    Android中几种图像特效处理方法

    Android中几种图像特效处理方法,是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.

    android图片处理

    android开发中的各种图片处理,包括缩放,重叠,灰度,水印,圆角,倒影,图片写文字,翻转。

    PictureUtil.java,android对图片进行操作封装类

    Bitmap → byte[];byte[] → Bitmap;Bitmap缩放;将Drawable转化为Bitmap;获得圆角图片;获得带倒影的图片;Drawable缩放

    通用Android工具库Common4Android.zip

    Bitmap常用工具类,Bitmap数据类型转换、圆角、缩放、倒影。 ConvertUtil.java 转换工具类,进行对象的类型转换。 DateUtil.java 日期工具类,...

    Android编程中图片特效处理方法小结

    主要介绍了Android编程中图片特效处理方法,实例总结了Android实现图片的转换、缩放、圆角及倒影等效果的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    android Bitmap用法总结

    //获得带倒影的图片方法 public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){ final int reflectionGap = 4; int width = bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix =...

    常用图片特效处理功能

    常用图片特效处理功能源码,该项目实现了图片的各种特效处理,分表有"图片缩放", "图片圆角", "图片倒影", "旋转图片", "图片反转", "图片色调饱和度、色相、亮度处理", "涂鸦,水印", "图片上写文字", "怀旧效果",...

    Android高手进阶教程(二十二)之Android中几种图像特效处理的集锦汇总!!

    大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等. 废话少说了,直接讲解今天的实例,本例主要是先获取壁纸...

    ImageUtils

    android 开发中的ImageUtils, 包括图片操作bitmap的各种操作,缩放图片,裁剪图片,倾斜图片,旋转图片,转为圆形图片,转为圆角图片,添加倒影,添加文字水印,添加图片水印,快速模糊,保存图片,压缩图片等。

    17种图片特效处理

    可以实现图片缩放、图片圆角、图片倒影、旋转图片、图片反转、图片色调饱和度、色相、亮度处理、图片涂鸦水印、怀旧效果、高斯模糊效果、浮雕效果、锐化效果、底片效果、光照效果、图片裁剪、图片素描等17种安卓手机...

Global site tag (gtag.js) - Google Analytics