HTML 5灰度过滤器不工作
HTML 5 Grayscale filter not working
我正在尝试为灰度、负片和模糊效果制作一个简单的HTML5和JavaScript图像过滤器。每当我点击按钮时,画布上什么都不会出现。有什么办法我能修好吗?我正在尽我所能,但还是失败了。请参阅下面的我的编码:
JavaScript:
<script>
function goClick(){
var c = document.getElementById('myCanvas');
var ctx = c.getContext('2d');
var btnGrayscale = document.getElementById('btnGrayscale');
var btnNegative = document.getElementById('btnNegative');
var btnBlur = document.getElementById('btnBlur');
var img = new Image();
img.onload = function(){
ctx.drawImage(img, 0, 0);
ctx.putImageData(imgd, 10, 353);
}
//grayscale
btnGrayscale.onclick = function() {
clear();
ctx.drawImage(imageObj, 0, 0);
var imgData = ctx.getImageData(0, 0, c.width, c.height);
var pixels = imgData.data;
for (var i = 0, n = pixels.length; i < n; i += 4) {
var grayscale = pixels[i ] * .3 + pixels[i+1] * .59 + pixels[i+2] * .11;
pixels[i ] = grayscale; // red
pixels[i+1] = grayscale; // green
pixels[i+2] = grayscale; // blue
// alpha
}
ctx.putImageData(imgData, 0, 0);
};
img.src = "image/Angelina_Jolie.jpg";
}
HTML5:
<body>
<img src="image/Angelina_Jolie.jpg" id="angelina"/>
<canvas id='myCanvas' width='500' height='375' style='border:solid 1px #000000'></canvas>
<input type="button" value="Grayscale" class="buttons" id="btnGrayscale" />
<input type="button" value="Negative" class="buttons" id="btnNegative" /><br />
<input type="button" value="Blur" class="buttons" id="btnBlur" /><br />
</body>
哇,代码中有很多错误。拼写错误的变量、不存在的对象等
我修复了对画布的所有引用(应该是c),删除了blurPass(不存在),将第一个putImageData更改为drawImage(这是一个图像,而不是当时的像素阵列)等等。
很明显,你并不是自己写的,你也没有真正努力学习它的作用,以及为什么它不起作用。看看下面的fiddle中可用的代码,并将其与旧代码进行比较,看看有什么变化,而不仅仅是复制&把它粘贴到你的项目中,并为此感到高兴。
var img = new Image();
img.onload = function () {
ctx.drawImage(img, 0, 0); // Can't use putImageData here!
}
http://jsfiddle.net/p6ume/3/
相关文章:
- 让我自己的过滤器不工作
- 角度过滤器可以工作,但将输入视为未定义并抛出错误
- ng repeat在ng repeat-过滤器不工作
- 异步加载的SVG过滤器feColorMatrix在Chrome中工作,而不是在Safari或Firefox中
- 角度过滤器不工作
- Angular/Ionic/Javascript:无法让下拉过滤器作为复选框工作
- 角度:搜索器(过滤器)根据数据类型工作不同
- Angularjs ng-repeat过滤器在v1.0.1中工作,而不是v1.3.7
- 如果可能的话,我需要帮助了解这个jQuery过滤器函数是如何工作的,逐行工作
- 无法让 Angular 自定义过滤器工作
- Angularjs 过滤器无法按预期工作
- 角度 - 自定义过滤器如何真正工作
- jQuery点击按钮don'在剑道网格中应用过滤器后无法工作
- 角度自定义指令基本输入过滤器工作不正常,只显示匹配的第一个实例
- 选择2过滤器不工作
- 范围过滤器仅在第一个控制器中工作
- 剑道源过滤器不工作
- 为什么我在Meteor反应表中的自定义过滤器不工作
- AngularJS过滤器(不工作)
- AngularJS过滤器和ng模型如何在JavaScript环境中工作