① 為什麼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
}
}