canvas 图片反色

代码实例:

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><title>图片反色</title><style type="text/css">body{ background:black;}#c1{ background:white;}</style><script type="text/javascript">window.οnlοad=function(){var oC=document.getElementById('c1');var oGC=oC.getContext('2d');var oImg=new Image();oImg.οnlοad=function()//图片预加载后才可以操作{draw(this);}oImg.src='1.PNG';function draw(obj){oC.width=obj.width;//将画布设为图片宽的一倍oC.height=obj.height*2;//将画布设为图片高的两倍,以用来倒影oGC.drawImage(obj,0,0);//将图片画在画布上var newImg=oGC.getImageData(0,0,obj.width,obj.height);//得到图片数据var ONewImg = oGC.createImageData(obj.width,obj.height);//重要。要创建新的图片数据再将原来的反色后色数据赋值,// 如果直接在原数据上操作数据会导致数据覆盖而得不到结果for(var i=0;i<newImg.height;i++){for(var j=0;j<newImg.width;j++){var color = getXY(newImg,j,i);//得到原来图片数据,一个像素有四个值,分别代表rgbavar result = [];result[0] = 255 - color[0];result[1] = 255 - color[1];result[2] = 255 - color[2];result[3] = 255*i/newImg.height;setXY(ONewImg,j,newImg.height-i,result);//设置到新的数据里面}}oGC.putImageData(ONewImg,0,obj.height);//将图片数据设置到画布中}//获取rgbafunction getXY(obj,x,y){var w=obj.width;var h=obj.height;var data=obj.data;var color=[];color.push(data[(y*w+x)*4]);color.push(data[(y*w+x)*4+1]);color.push(data[(y*w+x)*4+2]);color.push(data[(y*w+x)*4+3]);return color;}//设置rgbafunction setXY(obj,x,y,color){var w=obj.width;var h=obj.height;var data=obj.data;data[(y*w+x)*4]=color[0];data[(y*w+x)*4+1]=color[1];data[(y*w+x)*4+2]=color[2];data[(y*w+x)*4+3]=color[3];}}</script>
</head><body>
<canvas id="c1" width="500" height="500"></canvas>
</body>
</html>

  图片:

效果:

 

 

2017-09-09   22:40:39

转载于:https://www.cnblogs.com/guangzhou11/p/7499594.html

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

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

相关文章

Spring MVC-集成(Integration)-集成LOG4J示例(转载实践)

以下内容翻译自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 说明&#xff1a;示例基于Spring MVC 4.1.6。 以下示例说明如何使用Spring Web MVC框架来触发LOG4J。首先&#xff0c;让我们使用Eclipse IDE&#xff0c;并按照以下步骤使用Spring W…

NUMA架构和Java

是时候部署您的应用程序了&#xff0c;期待着采购最适合负载要求的硬件。 如今&#xff0c;具有40核或80核的包装盒非常普遍。 总体概念是更多的内核&#xff0c;更多的处理能力&#xff0c;更多的吞吐量。 但是我看到了一些相反的结果&#xff0c;表明小型的CPU密集型测试运行…

#Pragma Pack(n)与内存分配

#pragma pack(n) 解释一&#xff1a; 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n)&#xff0c;n1,2,4,8,16来改变这一系数&#xff0c;其中的n就是你要指定的“对齐系数”。 规则&#xff1a; 1、数据成员对齐规…

SolidEdge如何复制特征 建立类似于UG 块的概念

直接CtrlC和CtrlV可以实现特征的复制粘贴 按N键可以改变特征方向 已经复制完成的特征要进行定位&#xff0c;则右击该特征&#xff0c;编辑轮廓&#xff0c;可以进行聪慧尺寸的标注 使用特征库的方式&#xff0c;就像UG的块一样&#xff0c;可以给所有零件调用。在任意位置新建…

mysql映射文件_Mybatis SQL映射文件

简单查询insert添加insert可以使用数据库支持的自动生成主键策略&#xff0c;设置useGeneratedKeys”true”&#xff0c;然后把keyProperty 设成对应的列&#xff0c;就搞定了。比如说上面的StudentEntity 使用auto-generated 为id 列生成主键.还可以使用selectKey元素。下面例…

第七天作业

---恢复内容开始--- 作业一&#xff1a;nginx服务 二进制安装nginx包 作为web服务修改配置文件 让配置生效&#xff0c;验证配置 直至出现epel的两个文件&#xff0c;否则reinstall, 接下来写配置文件&#xff0c; 这款软件的服务目录&#xff0c; 在里面编辑一些东西&#xff…

人脸数据库大全(包括人脸识别、关键点检测、表情识别,人脸姿态等等)

搞计算机视觉的人&#xff0c;对人脸技术并不陌生。在做实验的时候需要各种数据集进行训练&#xff0c;却往往苦于找不到合适的数据集&#xff0c;这篇文章将给大家带来一点福音。 目前为止最全的是人脸数据库总结&#xff1a; The Color FERET Database, USA The FERET progra…

JavaFX游戏(四连环)

这是我的第一个JavaFX游戏教程&#xff0c;也是我关于JavaFX面板的第一篇博客文章。 我仅用200几行代码就完成了这款四连环游戏&#xff0c;足以应付一个简单的游戏。 我在这里使用GridPane面板对磁盘进行布局&#xff0c;GridPane是JavaFX布局窗格之一&#xff0c;但它与另一个…

拼图项目:延期的后果

Mark Reinhold先生于2012年7月宣布 &#xff0c;他们计划从Java 8撤回Jigsaw项目 &#xff0c;因为Jigsaw计划于2013年9月&#xff08;从现在开始一年&#xff09;推迟其发布。 这个日期是众所周知的&#xff0c;因为Oracle已决定实施Java的两年路线图计划&#xff0c;因此2013…

Navicat下Oracle数据泵的使用简单例子

如何使用Navicat等数据库开发工具进行高效开发将是未来工作的重点。Navicat一来美观而来够操作够傻瓜&#xff0c;使用得当其强大功能与PL SQL不相上下。今天学习就是如何在Navicat中使用数据泵进行数据导入导出。 数据泵使用前事项&#xff1a;想使用数据泵必须以sys或system等…

前端自动化之nvm安装

nvm ——node环境版本控制工具。 1.解压安装包 2.打开setting文件&#xff0c;修改文件内容 root: D:\node\nvm path: D:\node\nodejs arch: 64 proxy: root&#xff1a;当前nvm所在的路径 path&#xff1a;将root路径的nvm改为nodejs arch&#xff1a;64位系统 3.配置环境变量…

mysql 主从复制介绍_MySQL 主从复制介绍

一、MySQL 主从复制简介(1) MySQL 主从复制通过逻辑的 binlog 日志复制到要同步的服务器本地&#xff0c;然后由本地的线程读取日志里面的 SQL 语句&#xff0c;重新应用到 MySQL 数据库中(2) 在复制过程中&#xff0c;一台服务器充当主服务器&#xff0c;接收来自用户的内容更…

JavaFX教程–基础

JavaFX似乎正在RIA领域获得发展。 有了正确的工具和开发支持&#xff0c;它肯定会在下一个最佳技术“物”上付出巨大的代价。 我没有在这里写任何JavaFX评论&#xff0c;因为有很多技术评论可能对它进行了广泛的评论&#xff0c;但是&#xff0c;我将编写一个简单的教程&#x…

java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

资源名称&#xff1a;《Java Swing图形界面开发与案例详解》PDF内容简介&#xff1a;《Java Swing图形界面开发与案例详解》全书共20章&#xff0c;其中第1&#xff5e;2章主要介绍有关Swing的基础知识&#xff0c;包括Swing的基本概述、如何使用IDE开发Swing程序&#xff1b;第…

Python—day3

1、字符串在C里边就是字符数组 Python里边一切事物都是对象&#xff0c;对象则是类创建的 2、set集合 set是一个无序且不能重复的元素集合 #!/usr/bin/env python# encoding: utf-8#set对象不能有重复s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

当引入第三方的框架的时候 容易产生以下问题&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如图&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 与 build settings栏中的Packaging中的Produc…

使JFrame透明

首先创建一个带有滑块的框架&#xff0c;该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作业之成员介绍

Lab205的新鲜血液 很理所当然的&#xff0c;实验室的4枚“小鲜肉”在现代软工的课程上组成了一个team&#xff0c;作为一个负责的team长&#xff0c;我当然要放上组员们的自述啦&#xff01;&#xff08;为什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;谁让我是个傲娇的组长…

java自定义分页标签_自定义分页标签--仿javaeye分页效果

效果如图&#xff1a;1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤(1)开发自定义标签处理类。(2)建立*.tld文件。(3)在web.xml中增加自定义标签的定义。(4)在jsp中使用自定义标签。2、自定义标签类(1)继承javax.servlet.jsp.tagext.TagSupport(2)标签类属性&a…

201521123052《Java程序设计》第5周学习总结

1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点。 1.2 可选&#xff1a;使用常规方法总结其他上课内容。 学习了更多markdown的知识 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读&#xff1a;Child压缩包内源代码package parent;publi…