基本上,我試圖爲我的畫布應用程序實現高通濾鏡。這個概念很簡單:將常規圖像像素減去模糊半徑爲x的同一圖像的像素。 看似簡單吧?操作2個圖像數據對象在一起
var d = pixel.data;
var blurdata = blur(amnt, pixel);
var bd = blurdata.data;
for (var i=0; i<d.length; i+=4) {
d[i] = 128+(d[i]-bd[i]);
d[i+1] = 128+(d[i+1]-bd[i+1]);
d[i+2] = 128+(d[i+2]-bd[i+2]);
}
return pixel;
該代碼運行2個參數,amnt和像素。 Pixel是ctx.getImageData對象,amnt是模糊半徑。 blur函數也返回一個imagedata對象。儘管模糊代碼不是問題。如預期那樣工作100%。問題是,似乎d和bd變量是相同的。我不知道爲什麼。當從d [i]中減去bd [i]時,結果爲0,當將數據添加到128時,將數據放回到畫布中時,結果爲完全灰色圖像。哦,模糊數據和像素數據具有相同的尺寸。
任何幫助真的很感激。
模糊函數:http://www.files.croar.net/f/9/
上傳到JSFiddle? – mjkaufer
不能。使用的庫過多,以及太多的代碼(如上傳示例圖像)放入一個jsfiddle中。我已經確定這個問題在代碼中的某處。似乎其中一個數據對象正在與另一個數據對象混淆,但我不知道爲什麼。 – croar
當我們看不到你是如何設置其他變量等的時候,很難單獨解決這個問題。我的建議是運行'console.log',看看有沒有什麼不合理的。你記得做'canvas.putImageData'嗎? – mjkaufer