Firefox、Selenium、toDataURL、Uint8ClampedArray和Python

3 投票
1 回答
1267 浏览
提问于 2025-04-16 20:29

我正在用JavaScript处理图像数据,现在我想通过Selenium API把这些数据传给Python,尽量做到高效。

用canvas.toDataURL()方法传递画布数据很简单,但缺点是图像会被编码和解码成PNG格式,这样会增加处理的负担。

我在想,能不能直接把JavaScript中的原始数组数据通过Selenium传给Python,这样可以:

  • 直接传递原生格式的数据(无符号整数数据)

  • 把原始像素数据转换成base64编码,像toDataURL()那样,或者干脆在JavaScript中自己处理(希望能用JIT优化的循环)

看起来canvasContext.getImageData(0, 0, w, h).data的对象类型是Uint8ClampedArray。有什么好的方法可以把这些数据转换成可以通过Selenium轻松传递给Python的格式吗?

使用Selenium 2.0 RC,任何版本的Firefox都可以。

1 个回答

1

因为你在使用Selenium和浏览器之间的通信时,是通过字符串来进行的,所以我觉得你必须把图片数据转换成base64编码。直接发送原始的二进制数据可能是不行的。

你可以尝试自己设计一种字符串编码的方法,但效果可能和内置的方法差不多。

撰写回答