图片过滤器不起作用
问题描述:
好的,基本上,我制作了这个程序,要求用户提供一个图片链接,然后询问用户他们想要使用的过滤器类型,并将过滤器应用到图片图片过滤器不起作用
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是提到的代码的链接---
答
什么你正在运行到的是网络平台的安全限制。
绘制的横原点图像(粗略地说,从另一个域加载的任何图像)到HTML画布“玷污”画布上。这可以防止从画布中读取信息的任何函数被使用,例如getPixel
。
欲了解更多信息,请参阅MDN文章CORS enabled image。但是,您可能需要让用户上传本地图像文件(使用文件输入),而不是通过URL指定一个。
正在通过PHP加载图像可能的选项为您的应用程序?或者将逻辑改为_“用户从硬盘上传”_而不是当前_“通过链接上传”_ –