是否可以使用imagedata數組對象來獲取Image()對象。我的最終目標是使用drawImage,而不是putImageData,因爲putImageData太慢了(從類似qs和我自己的測試的stackoverflow類似)。我所有的是imagedata數組,我想在畫布上的現有圖像上繪製。在drawImage中使用imagedata對象
0
A
回答
0
你可以試試這個不同的方法,假設每個的imageData包含圖像的水平線:
function drawImage(imageDataArray) {
// iterate through all lines
for(var j = 0; j < imageDataArray.length; ++j) {
var imageData = imageDataArray[j],
data = imageData.data,
x = 0,
y = j;
drawLine(data, x, y);
}
}
function drawPixel(ctx, red, green, blue, aplha, x, y) {
ctx.fillStyle = "rgba("+red+","+green+","+blue+","+(alpha/255)+")";
ctx.fillRect(x, y, 1, 1);
}
// The x and y argments embody the staring value of both coordinates
function drawLine(data, x, y) {
// iterate through all pixels
for(var i = 0, n = data.length; i < n; i += 4) {
if(i != 0) {
x = i/4;
}
var red = data[i];
var green = data[i + 1];
var blue = data[i + 2];
var alpha = data[i + 3];
drawPixel(ctx, red, green, blue, aplha, x, y);
}
}
但我擔心這樣做,這不會比putImageData()
速度更快,但不會很多更快。
如果是這種情況,那麼如果存在等效的排序像素並在一個筆劃上繪製它們,則可以另外添加邏輯以跳過迭代。
0
您可以從ImageData
創建ImageBitmap
,並將其傳遞給drawImage()
。 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/createImageBitmap
喜歡的東西:
const imgdata = ...;
const ctx = ...;
createImageBitmap(imgdata).then(function(imgBitmap) {
ctx.drawImage(imgBitmap, ...remaining args);
});
我能做到這一點,以擴大一些ImageData
我有,因爲putImageData
不具備縮放參數。不幸的是,它看起來像IE,Edge和Safari不支持createImageBitmap()
。
值得一提的是,對於我的情況(調整大小ImageData
),createImageBitmap()
確實有其他選項可以自行調整所產生的ImageBitmap
的大小。
相關問題
- 1. 我不能在drawImage()的對象中使用對象嗎?
- 2. 比較2 imageData對象
- 3. 在HTML5中使用drawImage
- 4. 在ThreeJS中使用imageData紋理
- 5. 在Firefox的畫布上下文對象上使用svg調用drawImage()的問題
- 6. 在循環中使用HTML/Javascript drawImage
- 7. 在java中使用drawImage圖像
- 8. 使用drawImage在JPanel中繪製圖像
- 9. 如何使用.DrawImage()
- 10. 如何使用drawImage()
- 11. 無法對ImageData對象執行多個操作?
- 12. 保持對javascript canvas的引用imageData
- 13. Java - 在對象中使用對象
- 14. 在對象中使用對象
- 15. 在對象中使用對象?
- 16. 使用XNA/DirectX的DrawImage/DrawLine
- 17. 使用Javascript - 畫布的drawImage
- 18. 繪圖使用的DrawImage
- 19. ImageData要檢索指定顏色的x,y位置的對象
- 20. 無法使DrawImage在Java中工作
- 21. drawImage()不繪製預先加載的圖像對象。使用OO javascript
- 22. 在android中使用對象
- 23. 在Lua中使用對象
- 24. 在對象中使用DefaultIfEmpty?
- 25. 在C中使用對象#
- 26. 在Javascript中使用對象
- 27. 如何使用HTML5縮放ImageData?
- 28. drawImage中的TypeMismatchError()
- 29. 混合兩個的ImageData成一個的ImageData與在Javascript
- 30. 寫入IplImage imageData