`
linfengsheng
  • 浏览: 130646 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
  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. }  
分享到:
评论

相关推荐

    3D 带倒影展示画廊 android

    在Android平台上,开发一款具有3D效果和倒影功能的画廊应用是一项技术挑战,而“3D带倒影展示画廊”就是这样一个实现。这个Demo展示了如何在Android应用程序中创建一个具有3D视觉效果和倒影的图片展示区域,为用户...

    Android图片各种处理效果源码

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

    Android开发中常用的功能

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

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

    在Android开发中,图像处理是一项常见的任务,涵盖了各种操作,如类型转换、比例缩放、创建倒影和制作圆角图像。以下是对这些知识点的详细解释: 1. **比例缩放图片**: 在Android中,可以使用`Bitmap`类提供的...

    android Bitmap圆角与倒影的具体实现代码

    在上述代码中,我们看到了如何实现Bitmap的两种特殊效果:圆角和倒影。下面将详细解释这两种效果的实现原理。 1. **圆角Bitmap**: 为了将Bitmap的四个角变成圆形,我们可以使用`getRoundedCornerBitmap()`方法。...

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

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

    android几种图形特效

    本文将深入探讨几种常见的Android图形特效,包括图片的圆角、图片的缩放、图片的倒影以及图片的旋转,这些都是Android开发者需要掌握的基本技能。 首先,我们来看如何实现图片的圆角效果。在Android中,可以使用...

    Android 轻松实现图片倒影效果实例代码

    在Android开发中,有时我们需要为应用添加一些视觉特效,比如图片倒影效果。这个实例代码展示了如何在Android中轻松创建一个图片倒影效果。我们主要会涉及到以下几个关键知识点: 1. **Bitmap**: Bitmap是Android...

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

    本文将深入探讨Android中图片转换、缩放、圆角以及倒影等特效的实现方法。 首先,我们来看一下如何将`Drawable`转换为`Bitmap`。在Android中,`Drawable`是一个抽象类,它代表了屏幕上的可视元素,而`Bitmap`则是一...

    android图片处理

    在Android开发中,图片处理是一项常见的任务,涉及到各种视觉效果的实现。以下是对标题和描述中涉及的知识点的详细说明: 1. **图片缩放**:Android提供了Bitmap类的多种方法来处理图片缩放,如`createScaledBitmap...

    图片的各种效果的处理

    1. **图片缩放**:Android提供了多种方法进行图片缩放,如`Bitmap.createScaledBitmap()`函数,可以按照指定的宽高比例对图片进行缩放,保持图片原有的宽高比。 2. **图片圆角**:要实现圆角图片,通常需要自定义`...

    android 图片工具

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

    Android中几种图片特效的处理的实现方法

    在Android中,我们可以通过Matrix类来实现图片的缩放。Matrix提供了postScale()方法,该方法允许在现有的变换矩阵上应用缩放操作。在`zoomBitmap()`函数中,首先获取原图的宽度和高度,然后计算出缩放比例,最后...

    安卓手机图片特效

    在安卓平台上,实现图片特效涉及了多个图像处理技术与编程概念。以下是对这些知识点的详细说明: 1. **图片缩放**:通过调整图片的宽度和高度,改变其原始尺寸。在Android中,通常使用`Bitmap.createScaledBitmap()...

    ImageUtils

    根据提供的描述,我们可以了解到 `ImageUtils` 支持的功能包括但不限于:缩放图片、裁剪图片、倾斜图片、旋转图片、将图片转换为圆形或圆角图片、添加倒影、添加文字或图片水印以及快速模糊等。接下来,我们将深入...

    bitmap图片处理工具类

    "Bitmap图片处理工具类" 提供了多种对位图(Bitmap)进行操作的功能,如颜色转换、图像分割、缩放、旋转、调整透明度、生成圆角图片以及文字与倒影效果的绘制。接下来,我们将深入探讨这些知识点。 首先,`...

Global site tag (gtag.js) - Google Analytics