我需要使用 JavaScript 下载 BMP 并将其渲染到 Internet Explorer 中的屏幕上。首先,是的,我知道这很疯狂,我不打算解释为什么,让我们暂时接受 img src 由于安全限制而无法工作,但是在帖子中具有适当身份验证的 ajax 请求将拉回图像。为了简单起见,这个例子绕过了所有的安全性,只是证明我们可以渲染一些东西。
我能想到的最好的主意是通过 ajax 获取流,解码位图,然后用画布渲染它。Internet Explorer 显然不支持画布,但幸运的是 Google 为 SVG 提供了一个名为 excanvas 的包装器,我可以使用它。
我的代码(绘图代码似乎可以工作,bmp 解码没那么多)
未来对 BMP 之外的其他图像的支持是合理的,并且由于画布的工作方式,最容易在 RGBA 中绘制像素。Texture2D 本质上是 RGBA 字节数组的包装类,以及绘图代码。ByteStream 使处理字节数组的眼睛更容易一些,而 BitmapDecoder 包含将 BGR 格式转换为 RGBA texture2d 以进行绘图的方法。
字节是否可能在此过程中被错误翻译,或者我的解码逻辑有什么问题?
仅供参考,我从维基百科获得了文件规范:
http://en.wikipedia.org/wiki/BMP_file_format#Bitmap_Information_.28DIB_header.29
知道导致我的 BMP 绘制不正确的解码逻辑或绘图逻辑中发生了什么吗?