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.pswp.cn/news/371264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371264.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中的文件父路徑怎么表達_python中的文件父路徑怎么表達_如何在Python中訪問父目錄...

所以我有一個朋友給我的Python腳本&#xff0c;但是我沒有Python的經驗。代碼如下&#xff1a;from os import path, chdir, listdir, mkdir, getcwdfrom sys import argvfrom zipfile import ZipFilefrom time import sleep#Defines what extensions to look for within the f…

Maven的中央倉庫地址

www.mvnrepository.com轉載于:https://www.cnblogs.com/j-liu3323/p/6590435.html

Spring–添加AOP支持

我聽到了一個有關一位高級&#xff08;且酬勞頗豐&#xff09;軟件工程師的故事。 他的任務是記錄他正在研究的項目中每個控制器中的每個方法。 工程師重寫了所有控制器方法&#xff0c;因此使用如下代碼&#xff1a; RequestMapping(method RequestMethod.GET)public String …

vscode python第三方庫檢測_VSCode中使用Pylint檢查python代碼

為什么使用lint在日常開發中&#xff0c;不同開發人員會寫下不同風格的代碼&#xff0c;導致代碼可維護性變差&#xff0c;為了解決風格不一致問題&#xff0c;我們可以制定代碼規范&#xff0c;讓開發人員都遵守同樣的規范編寫代碼。在開發過程中&#xff0c;部分代碼存在質量…

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密集型測試運行…

存儲過程常用技巧

我們在進行pl/sql編程時打交道最多的就是存儲過程了。存儲過程的結構是非常的簡單的&#xff0c;我們在這里除了學習存儲過程的基本結構外&#xff0c;還會學習編寫存儲過程時相關的一些實用的知識。如&#xff1a;游標的處理&#xff0c;異常的處理&#xff0c;集合的選擇等等…

vue是用a標簽打開新頁面_vue 在新窗口打開頁面并設置不同的背景

開發一個新系統&#xff0c;前端用的vue&#xff0c;vue是單體應用&#xff0c;所有頁面都在一個窗口里實現&#xff0c;但項目要求在點button鏈接后要新打開一個瀏覽器頁面&#xff0c;解決方法如下&#xff1a;1. 給此button設置新事件 click"createdefect"提交缺陷…

卡爾曼濾波的推導

卡爾曼濾波的推導1 最小二乘法在一個線性系統中&#xff0c;若\(x\)為常量&#xff0c;是我們要估計的量&#xff0c;關于\(x\)的觀測方程如下&#xff1a; \[ y Hx v \tag{1.1}\] \(H\)是觀測矩陣&#xff08;或者說算符&#xff09;&#xff0c;\(v\)是噪音&#xff0c;\(y…

Java注釋-保留

考慮一下Java批注&#xff1a; public interface AnAnnotaton {}帶有此注釋的類&#xff1a; AnAnnotaton class AnAnnotatedClass{}還有一個測試&#xff0c;檢查類中是否存在此批注&#xff1a; import static org.hamcrest.MatcherAssert.assertThat; import static org.h…

MYSQL查詢選修三門以上課程_SQL高級查詢的練習題

Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname,T#) 課程表SC(S#,C#,score) 成績表Teacher(T#,Tname) 教師表問題&#xff1a;1、查詢“001”課程比“002”課程成績高的所有學生的學號&#xff1b;select a.S# from (select s#,score from SC where C#001) a,(select s#,s…

Determing client's IP

AuthorDeterming clients IPАнатоли&23.04.2009 18:39:46Registered userHow to determine clients IP address in THTTPServer.OnClientConnected, THTTPServer.OnClientDisonnected and TRtcFunction.OnExecute events?Danijel Tkalcec [RTC]23.04.2009 19:45:05…

mysql aa復制_MySQL的復制架構與優化

MySQL的復制架構與優化###########原理###########1.主服務器將更新的數據的sql語句(例如&#xff0c;insert&#xff0c;update&#xff0c;delete等)寫入到二進制文件中(由log-bin選項開啟)。此二進制文件由一個索引文件跟蹤維護。2.從服務器連接(使用I/O線程連接)主服務器&a…

如何安裝Gradle

Gradle是一個簡單而強大的構建工具。 它類似于Ant構建工具。 它可以很好地管理構建&#xff0c;還可以處理構建依賴性。 Gradle最好的部分是它是開源項目。 如果您正在考慮安裝并嘗試一下&#xff0c;那么您來對地方了。 Gradle的開發周期為4周&#xff0c;因此&#xff0c;每隔…

nmap使用指南

一、目標指定 1.CIDR標志位 192.168.1.0/24 2.指定范圍 192.168.1.1-255 192.168.1-255.1&#xff08;任意位置&#xff09;3.IPv6地址只能用規范的IPv6地址或主機名指定。 CIDR 和八位字節范圍不支持IPv6&#xff0c;因為它們對于IPv6幾乎沒什么用。 -iL <文件名> 主機名…

#Pragma Pack(n)與內存分配

#pragma pack(n) 解釋一&#xff1a; 每個特定平臺上的編譯器都有自己的默認“對齊系數”(也叫對齊模數)。程序員可以通過預編譯命令#pragma pack(n)&#xff0c;n1,2,4,8,16來改變這一系數&#xff0c;其中的n就是你要指定的“對齊系數”。 規則&#xff1a; 1、數據成員對齊規…

Java死了還是無敵?

作家艾薩克阿西莫夫&#xff08;Isaac Asimov&#xff09;曾經說過“唯一不變的就是變化”。 這不僅僅是軟件行業中的一個短語&#xff0c;這是絕對的事實。 曾經有一天&#xff0c;Corba為王&#xff0c;但Web Services篡奪了它。 即使在Web服務領域&#xff0c;過去也全都是關…

mysql數據庫訪問問題嗎_#MySQL數據庫無法遠程訪問的問題

在 Ubuntu上裝了mysql&#xff0c;因為項目的數據庫是mysql&#xff0c;將項目放在tomcat里面webapp下面&#xff0c;一直啟動不成功。本來一直以為是jdbc驅動問題&#xff0c;后來發現不是。1.cd /etc/mysql 找到my.cnf查找到bind-address&#xff0c;將 bind-address127.0.0.…

SolidEdge如何復制特征 建立類似于UG 塊的概念

直接CtrlC和CtrlV可以實現特征的復制粘貼 按N鍵可以改變特征方向 已經復制完成的特征要進行定位&#xff0c;則右擊該特征&#xff0c;編輯輪廓&#xff0c;可以進行聰慧尺寸的標注 使用特征庫的方式&#xff0c;就像UG的塊一樣&#xff0c;可以給所有零件調用。在任意位置新建…

Gradle自定義插件

本教程介紹了創建Gradle獨立自定義插件的方法。 它涵蓋以下主題 創建任務&#xff0c;并在“自定義”插件中使用它 獨立的自定義插件 簡短的插件ID 使用settings.gradle自定義Gradle設置 項目信息&#xff1a; 搖籃版本&#xff1a;1.1 操作系統平臺&#xff1a;Ubuntu 1…