2017-03-17 105 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