export function filter(url) {
var c = document.createElement('canvas')
c.id = "canvas_greyscale"
var canvas = new fabric.Canvas('canvas_greyscale')
fabric.Image.fromURL(url, function(oImg) {
c.height = oImg.height
c.width = oImg.width
oImg.filters.push(new fabric.Image.filters.Grayscale())
oImg.applyFilters(canvas.renderAll.bind(canvas))
canvas.add(oImg)
var img = canvas.toDataURL('image/png')
console.log(img)
return img
}, {crossOrigin: "Anonymous"})
}
此處我的畫布使用灰度過濾器呈現。它沒有問題,但是當我嘗試將canvas轉換爲url時,它會給我沒有過濾器的畫布。javascript fabricjs過濾器不會將過濾後的畫布返回到網址
我不知道這裏有什麼問題..
我在做什麼錯。我想有過濾器,網址
var img = canvas.toDataURL('image/png')
讓我像不帶過濾器
需要幫助
'applyFilters'是異步(這就是爲什麼你在它傳遞'renderAll'回調)。您需要在回調函數中調用toDataURL,否則在應用過濾器之前導出畫布。 – Kaiido
你能舉個例子嗎 – aryan
因爲它會使你的整個函數異步,所以你需要重寫它,但是需要寬泛的代碼:'function filter(url,callback){...(initCanvas)... var onend = function (){canvas.renderAll(); var img = canvas.toDataURL('image/png');回調(IMG);}; ... Image.fromURL(...,function(oImg){... oImg.applyFilters(onend); canvas.add(oImg);}' – Kaiido