2017-03-17 108 views
0

好的,基本上,我制作了这个程序,要求用户提供一个图片链接,然后询问用户他们想要使用的过滤器类型,并将过滤器应用到图片图片过滤器不起作用

function start(){ 
    askForImage(); 
    askForFilter(); 
} 

function askForImage(){ 
    var link = readLine("Please give the link to the image"); 
    println("Fitting the image to canvas as best a possible."); 
    var image = new WebImage(link); 
    image.setPosition(0, 0); 
    image.setSize(getWidth(), getHeight()); 
    add(image); 
} 

function askForFilter(){ 
    var filterType = readLine("What filter would you like to use on your photo?"); 

    if(filterType == "darken"){ 
     setTimeout(function(){ 
     darkenFilter(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "brighten"){ 
     setTimeout(function(){ 
     brightenFilter(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "invert"){ 
     setTimeout(function(){ 
     invert(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "grayscale"){ 
     setTimeout(function(){ 
     blackAndWhiteFilter(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "remove blue"){ 
     setTimeout(function(){ 
     removeBlue(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "remove red"){ 
     setTimeout(function(){ 
     removeRed(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "remove green"){ 
     setTimeout(function(){ 
     removeGreen(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else if(filterType == "saturate"){ 
     setTimeout(function(){ 
     saturate(image); 
     }, IMAGE_LOAD_WAIT_TIME); 
    }else{ 
     println("That is not a possible filter option."); 
    } 
} 

(对不起,我缩短了尽可能多的代码来传达出点) 这是我似乎遇到问题的部分。我忽略了所有过滤图像的函数,因为我知道过滤器正常工作,我测试了它们。显然的问题似乎是过滤器以错误的方式拍摄图像。我试图使用一个常量URL作为图像,并且运行良好,但是当用户输入URL时,过滤器不起作用。我认为该程序可能会在之前运行过滤器加载图片,但我不知道如何解决该问题,即使这是问题所在。我非常感谢帮助解决我的代码,谢谢!

--- This是提到的代码的链接---

+0

正在通过PHP加载图像可能的选项为您的应用程序?或者将逻辑改为_“用户从硬盘上传”_而不是当前_“通过链接上传”_ –

回答

1

什么你正在运行到的是网络平台的安全限制。

绘制的横原点图像(粗略地说,从另一个域加载的任何图像)到HTML画布“玷污”画布上。这可以防止从画布中读取信息的任何函数被使用,例如getPixel

欲了解更多信息,请参阅MDN文章CORS enabled image。但是,您可能需要让用户上传本地图像文件(使用文件输入),而不是通过URL指定一个。

+0

但是,正如我相信我在问题中提到的那样;我已经在一个常量变量中使用了链接的过滤器,所以它应该使用'readLine'工作,不是吗? – Layne

+0

取决于链接指向的位置。如果是在同一个域上的图像,那将是一个同源图像,并且不会受到交叉原点限制。 – duskwuff

+0

我用于常量和输入的链接都是相同的。 – Layne