浏览器对图像格式的支持很差。实际上只支持 GIF、JPG、PNG 和 WebP。
我想要一个新的:JBIG2
从最终用户的角度来看,他只需下载并安装一个 chrome 扩展程序,他的浏览器就能够解码新的图像格式。
从 Web 开发人员的角度来看,新格式将是透明的,并且与标签 img、canvas 和 css 兼容。为了显示 JBIG2 图像,他仍然使用:
<img src=“path/to/myImage.jbig2”>
或者
var myImage = new Image();
myImage.addEventListener( 'load', function() {
// insert in canvas, when image is loaded
});
myImage.src = 'path/to/myImage.jbig2';
或者
.my-class {
background-image: url( “path/to/myImage.jbig2”);
}
问题不在于解码器本身。我预计会使用这个用 C 语言编写的JBig2dec 。
问题是如何实现一个新的图像解码器?在 Chrome 中,当我们必须运行 C 代码时,最好的解决方案是使用Native Client Extension。
更好的是,我可以在这个 NaCl 网页上阅读:
图形、音频等:运行本机代码模块来渲染 2D 和 3D 图形、播放音频、响应鼠标和键盘事件、在多个线程上运行以及直接访问内存,所有这些都无需用户安装插件。
多媒体应用程序:可以在 Native Client 模块中将用于处理声音、图像和电影的编解码器添加到浏览器中。
但不幸的是,没有文档也没有实现 2D 图形解码器的示例。我只是想我需要为 minetype image/jbig2注册一个钩子。
有谁知道如何用 NaCl 实现新的图像格式解码器?