① 为什么javascript高级程序设计上的灰阶过滤器没效果
是不是canvas不显示图片呢?
需要图片加载完成之后画到canvas里才可以。
varcanvas=document.getElementById('canvas');
varcontext=canvas.getContext('2d');
varimage=document.images[0];
functiondraw(){
context.drawImage(image,0,0);
varimageData=context.getImageData(0,0,image.width,image.height);
vardata=imageData.data;
varaverage=red=green=blue=alpha=0;
for(vari=0,len=data.length;i<len;i+=4){
red=data[i];
green=data[i+1];
blue=data[i+2];
alpha=data[i+3];
average=Math.floor((red+green+blue)/3);
data[i]=average;
data[i+1]=average;
data[i+2]=average;
}
imageData.data=data;
context.putImageData(imageData,0,0);
};
if(image.complete){
draw();
}else{
image.onload=draw;
}
② javascript 怎样过滤非法字符
你可以用过滤器来过过滤,中的filter。
public class WordFilter implements Filter {
//写自己的response
class MyResponse extends HttpServletResponseWrapper{
//放字符串的
private StringWriter sw = new StringWriter();
//1.这个构造是必须是,作用是把原来的传进来进行替换
public MyResponse(HttpServletResponse arg0) {
super(arg0);
}
//2. 重写方法
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(sw);
}
//3.重写toString
@Override
public String toString() {
return sw.toString();
}
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//替换自己的response
MyResponse response = new MyResponse((HttpServletResponse) arg1);
//让自己的response通过
arg2.doFilter(arg0, response);
//得到自己的内容
String str = response.toString();
//改一改内容
str = str.replaceAll("sb", "s*");
str = str.replaceAll("王八蛋", "??");
//传内容
response.getResponse().getOutputStream().print(str);
System.out.println("...");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}