zoukankan      html  css  js  c++  java
  • 获取图片倒影效果

    获取图片倒影效果

    View Code
     1 /**
     2      * 获取传入图片的倒影
     3      * 
     4      * @param originalImage 原始图片
     5      * @param reflectionGap 原始图片与倒影图片的间距
     6      * @param percentage     倒影是原图的高度的百分比 . 0< percentage < 1 
     7      * @param onlyReflect      true, 只返回倒影图片,倒影有蒙板效果; 
     8      *                         false, 返回原图 + 间距 + 倒影(从上到下的顺序), 间距和倒影都有蒙板效果
     9      * @return Bitmap;
    10      */
    11     public static Bitmap createReflectionImageWithOrigin(Bitmap originalImage, int reflectionGap, float percentage, boolean onlyReflect){ 
    12         
    13         int width = originalImage.getWidth(); 
    14         int height = originalImage.getHeight(); 
    15         int preHeight = (int)(height * percentage); 
    16         
    17         Matrix matrix = new Matrix(); 
    18         matrix.preScale(1, -1); // 图片矩阵变换(从低部向顶部的倒影)
    19 
    20         Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, (height - preHeight), width, preHeight, matrix, false); // 截取原图下半部分
    21 
    22         Bitmap reflectionBitmp = Bitmap.createBitmap(width, preHeight, Config.ARGB_8888);
    23         
    24         Canvas canvas = new Canvas(reflectionBitmp);// 绘制倒影图 
    25         Paint defaultPaint = new Paint();
    26         canvas.drawRect(0, height / 5, width, height / 5, defaultPaint);
    27         canvas.drawBitmap(reflectionImage, 0, 0, null);
    28         
    29         //给倒影图片添加遮罩效果
    30         Paint paint = new Paint(); 
    31         LinearGradient shader = new LinearGradient(0, 0, 0, reflectionBitmp.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP); 
    32         paint.setShader(shader); // 线性渐变效果
    33         paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); // 倒影遮罩效果
    34         canvas.drawRect(0, 0, width, reflectionBitmp.getHeight(), paint); // 绘制倒影的阴影效果
    35         
    36         Bitmap tempReflectionBitmap = reflectionBitmp;
    37         
    38         if (! onlyReflect) {
    39             tempReflectionBitmap = Bitmap.createBitmap(width, (height + preHeight), Config.ARGB_8888); // 创建倒影图片
    40             canvas = new Canvas(tempReflectionBitmap);// 绘制倒影图(原图 + 间距 + 倒影) 
    41             canvas.drawBitmap(originalImage, 0, 0, null); // 绘制原图
    42             canvas.drawRect(0, height,width,height + reflectionGap, defaultPaint);  // 绘制原图与倒影的间距
    43             canvas.drawRect(0, height, width, height + reflectionGap, paint); // 绘制间距的阴影效果
    44             canvas.drawBitmap(reflectionBitmp, 0, height + reflectionGap, null); // 绘制倒影图
    45         }
    46         
    47         return tempReflectionBitmap; 
    48     }
  • 相关阅读:
    UVA 1557
    基于角色的权限设计(二)
    用DirectShow实现视频採集-流程构建
    oracle中schema指的是什么?
    GCC 命令行具体解释
    希尔排序
    单点登录SSO的实现原理
    济南最新公交线路一览(BRT)
    编写你自己的单点登录(SSO)服务
    C和指针 (pointers on C)——第五章:操作符和表达式
  • 原文地址:https://www.cnblogs.com/zhangyulogin/p/2748297.html
Copyright © 2011-2022 走看看