获取图片倒影效果

获取图片倒影效果

 

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故障代码表示进水故障…

[html] html6即将到来,你最期待的是什么特性呢?

[html] html6即将到来&#xff0c;你最期待的是什么特性呢&#xff1f; 模块化个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

oracle 细粒审核,oracle10g 细粒审计

oracle10g 细粒审计oracle10g 细粒审计自己试验成功的例子&#xff1a;sqlplus /nologconn /as sysdbabegindbms_fga.add_policy (object_schema>system, ####方案名object_name>nbstutb, ####表名policy_name>nbstu, ####自定义的策略名statement_types> SELECT,D…

懒惰了

少玩游戏&#xff0c;这不是韩国&#xff0c;你打不出房子车子还有资本。可以有爱好&#xff0c;但要把握尺度&#xff0c;少玩农场&#xff0c;牧场&#xff0c;斗地主等一些高度吸引人思想的晋级游戏&#xff0c;也许你的级别很高&#xff0c;但不代表你有多么成功&#xff0…

[html] 你是如何理解html与css分离的?

[html] 你是如何理解html与css分离的&#xff1f; 降低冗余度, 易理解, 易维护, 分离可以减轻html与css的逻辑, 加快提升速度吧个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!

soup.select(.pc_temp_songlist > ul > li >a)同样对歌曲时长的分析方法也如上&#xff0c;对 select 的具体用法可参考如下&#x1f517;&#xff1a;Python中BeautifulSoup库的find_all、select用法三、爬取酷狗Top500的歌曲import requestsfrom bs4 import Beautif…

C#汉字转换拼音技术详解(高性能)

通过网上汉字转换成拼音的代码&#xff0c;经过本人优化&#xff0c;性能将更加优异。 下面将源代码贴出。 [csharp] view plaincopy public static class ChineseToPinYin { private static readonly Dictionary<int, string> CodeCollections n…

oracle出错如何备份数据,备份oracle数据库出错

备份oracle数据库出错input datafile fno00027 name/index/neas_standard01.dbfinput datafile fno00035 name/oradata1/tancke/neas_standard09.dbfinput datafile fno00001 name/oradata/new/tancke/system01.dbfchannel ch01: starting piece 1 at 06-SEP-10RMAN-03009: fai…

python整数因子_Python:通过非整数因子下采样2D numpy数组

我最后写了一个小函数,使用scipy.ndimage.zoom升级图像,但是为了缩小它,它首先将它升级为原始形状的倍数,然后通过块平均缩小.它接受scipy.zoom的任何其他关键字参数(order和prefilter)我仍在寻找使用可用软件包的更清洁的解决方案.def zoomArray(inArray, finalShape, sameSum…

[html] 当html中使用map标签时,area中coords值如何精确定位呢?

[html] 当html中使用map标签时,area中coords值如何精确定位呢&#xff1f; 在 area 标签上支持的属性有 shape、coords、href、alt、target、type、download、hreflang、media、rel&#xff1b; coords 值如何精确定位圆形&#xff0c;在绘制一个圆形时&#xff0c;其 shapeci…

[html] 当img标签中的src图片加载失败时,怎么让它变得更美观呢?

[html] 当img标签中的src图片加载失败时&#xff0c;怎么让它变得更美观呢&#xff1f; 当默认图也失效&#xff0c;就会陷入死循环&#xff0c;需加变量计数&#xff0c;如果是 vue 的话用 error.once 更妙。在 onerror 给元素加个类名也阔以&#xff0c;这个就挺 nice 的。使…

python输入n×n的矩阵0和1_关于Python数组和矩阵的用法X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]...

1、关于数组、矩阵的说明。X[:,0] 取二维数组中第一维的所有数据。X[:,1] 取二维数组中第二维的所有数据。X[:,m:n] 取二维数组中第m维到第n-1维的所有数据。X[:,:,0] 取三维矩阵中第一维的所有数据。X[:,:,1] 取三维矩阵中第二维的所有数据。X[:,:,m:n] 取三维矩阵中第m维到第…

将时间格式的字符串转换成日期类型浏览器兼容解决方案

var currentTime "20120612"; var y currentTime.substring(0, 4); var m currentTime.substring(4, 6); var d currentTime.substring(6, 8); currentTime y "-" m "-" d;//此种写法在火狐跟谷歌下都可以currentTimey"/"m&qu…

对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...

2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式通常我们也称命令模式为终端机接口,terminal 或console 。Linux 预设的情况下会提供六个Terminal 来让使用者登入&#xff0c;切换的方式为使用&#xff1a;[Ctrl] [Alt] [F1]~[F6]的组合按钮。那这六个终端接口如何命名…

[html] 你有用过图片热区吗?它有什么运用场景?

[html] 你有用过图片热区吗&#xff1f;它有什么运用场景&#xff1f; 点击logo回到主页点击地图区块跳到具体的地方网站个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

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

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

Girl Love Value

【原题链接】 【题意说明】 有一组共有N个正整数&#xff0c;每次只能取其中的一个数&#xff0c;每次没有被取到的数会减少相应的值&#xff0c;把每次取到数的值累加&#xff0c;问共要取K个数&#xff0c;在所有取法中&#xff0c;和最大是多少&#xff1f; 【问题分析】 快…

linux查找时间文件,Linux基础教程 linux下使用find命令根据系统时间查找文件用法(示例代码)...

LinuxFind兄弟连Linux培训总结这些时间戳包括复制代码代码如下:mtime 文件内容上次修改时间atime 文件被读取或访问的时间ctime 文件状态变化时间mtime 和 atime 的含义都是很容易理解的&#xff0c;而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据&#xff0…

如何清理 Weblogic Server 缓存

Weblogic中的项目重新编译、部署之后并不起作用&#xff0c;仍然运行原来的程序。这可能是 Weblogic缓存在作怪&#xff0c;需要手动删除。 Weblogic 8 SP6 的缓存位置&#xff1a; %BEA HOME%\user_projects\domains\<Your Domain>\<Your Server>\.wlnotdelete\ex…

python安装django模块_python中安装django模块的方法

网上搜一下对应的版本号&#xff0c;版本号相对应。安装django有两种方式&#xff1a;1.pip安装pip install django这个方法我用的时候已经报错。貌似访问被阻挡。我一般都用第二种2.下载压缩包手动安装在django官网下载tar.gz包&#xff0c;放在python对应目录中解压缩命令窗口…