我想對生成的Blob進行檢查,這需要我將自己的變量傳遞給回調函數。但是,toBlob()
only passes the Blob。我如何將自己的變量傳遞給回調函數?或者,有沒有更好的方法來完成這個不涉及傳遞參數到回調?如何將參數傳遞給內置函數的回調函數? (即HTMLCanvasElement.toBlob)
試圖.bind
後,我無法得到它的工作:
function handleCanvas(canvas, inputImage, file, quality, resolutionMultiplier) {
console.log(quality);
canvas.toBlob(processImage.bind(null, inputImage, file, quality, resolutionMultiplier), "image/jpeg", Math.max(quality, 1)/100)
}
function processImage(newBlob, inputImage, file, quality, resolutionMultiplier) {
console.log(quality);
}
此打印出:
72
0.5
但他們都應該是72.自resolutionMultiplier
爲0.5,所有參數似乎被移到了一個左邊。從toBlob
我想要的blob根本不會被傳入processImage
。
最後編輯:找到了解決辦法,更直接的比我想象的要:
function handleCanvas(canvas, inputImage, file, quality, resolutionMultiplier) {
canvas.toBlob(function (newBlob) {
processImage(newBlob, inputImage, file, quality, resolutionMultiplier);
}, "image/jpeg", Math.max(quality, 1)/100)
}
你如何使用'toBlob()'?其他變量是什麼? –
我想這取決於?你是否希望它只是一個polyfill,它從第一個條件看起來就像這樣,如果是這樣,它不應該與你正在填充的本地方法一致嗎?如果你想檢查某些東西,只需在回調中進行檢查? – adeneo
@MattWay另一個變量是原始jpeg的文件大小。我用它來比較Blob是否變小。 – dtgq