获取图片倒影效果

获取图片倒影效果

 

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     }

转载于:https://www.cnblogs.com/zhangyulogin/archive/2012/10/31/2748297.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三星关闭shell提示_啄木鸟家庭维修|三星滚筒洗衣机4c故障代码

三星滚动洗衣机是很多用户都会安装的一种洗衣机&#xff0c;不管什么牌子的洗衣机&#xff0c;使用一段时间都可能出现一些故障&#xff0c;需要维修洗衣机。三星滚筒洗衣机4c就是一个常见洗衣机故障。下面介绍三星滚筒洗衣机4c故障代码。三星滚筒洗衣机4c故障代码表示进水故障…

mysql 写入慢_MySQL主从,你遇到过哪些问题?

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单&#xff0c;但是在实际使用过程中&#xff0c;更多的是解决问题&#xff0c;本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。1、可能的原因如下(1)主从…

linux自带磁盘加密工具下载,TrueCrypt(磁盘加密工具)

TrueCrypt是一款功能强大的虚拟磁盘加密工具&#xff0c;它能够在硬盘上创建一个或多个虚拟磁盘&#xff0c;并且自动加密磁盘文件&#xff0c;提供AES-256、Blowfish、Serpent等多种加密算法&#xff0c;用户可以同时采取两个或多个来提高加密效果&#xff0c;软件体积小巧&am…

虚拟同步发电机_一种光储型虚拟同步机介绍

专利权人 广东电网有限责任公司摘要&#xff1a;本实用新型实施例公开了一种光储型虚拟同步机&#xff0c;包括逆变器、光伏列、储能装置、本地负荷、开关和电网&#xff0c;所述光伏阵列通过第一DC/DC转换器连接在所述逆变器的直流母线上&#xff0c;所述储能装置通过第二DC/D…

windows 和linux查看硬件信息,Linux下如何查看硬件信息?

我们在 Linux 下进行开发时&#xff0c;有时也需要知道当前的硬件信息&#xff0c;比如&#xff1a;CPU几核&#xff1f;使用情况&#xff1f;内存大小及使用情况&#xff1f;USB设备是否被识别&#xff1f;等等类似此类问题。下面良许介绍一些常用的硬件查看命令。lshw 这个命…

YUI3下widget的plugin开发

最近在尝试使用YUI3重建ExtFrame框架&#xff0c;使用YUI3做为更佳的UI和JS支持 和ExtJS比&#xff0c;YUI3的UI看起来缺少了足够的UI控件&#xff0c;但是&#xff0c;YUI3的widget开发更灵活&#xff08;也更难掌握&#xff09;&#xff0c;YUI3的widget操作更多的基于DOM封装…

雅可比行列式_夏七八写:关于“斜二测画法”与雅可比行列式的关系的想法

最开始思考这两种有没有关系的时候也是偶然&#xff0c;&#xff0c;受到启发&#xff1a;雅可比行列式有什么意义呢&#xff0c;为什么对于像 的式子为什么要其后乘上一个雅可比行列式的绝对值呢&#xff1f;在说我的想法之前&#xff0c;我想可能要先提一下一些预备知识&…

restful get不传参数404_你知道什么是 Restful 风格吗?SpringMVC 带我们实现它!

Restful 风格的 API 是一种软件架构风格&#xff0c;设计风格而不是标准&#xff0c;只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。在 Restful 风格中&a…

linux搭建spark集群,详解Spark+Zookeeper搭建高可用Spark集群

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎&#xff1b;现在形成一个高速发展应用广泛的生态系统。Spark三种分布式部署方式比较目前Apache Spark支持三种分布式部署方式&#xff0c;分别是standalone、spark on mesos和 spark on YARN&#xff0c;详情参考。…

哈夫曼字符串编码c语言实现,基于哈夫曼(haffuman)算法的文件压缩的实现(C语言)(原创)...

本文首先简要阐述哈夫曼算法的基本思想&#xff0c;然后介绍了使用哈夫曼算法进行文件压缩和解压缩的处理步骤&#xff0c;最后给出了C语言实现的文件压缩和解压缩的源代码。哈夫曼算法的主要思想是&#xff1a;①首先遍历要处理的字符串&#xff0c;得到每个字符的出现的次数&…