【发布时间】:2014-05-13 15:17:07
【问题描述】:
浏览器对图像格式的支持很差。实际上只支持 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 图形解码器。我只是猜我需要register an hook for the minetypeimage/jbig2。
有人知道如何用 NaCl 实现新的图像格式解码器吗?
【问题讨论】:
-
根据文档“用于处理的编解码器声音、图像和电影可以在本地客户端模块中添加到浏览器”,NaCl 用于构建编解码器。但据我所知,缺少图形编解码器的文档和示例。完美的解决方案实际上是在 NaCl 中实现一个图像解码器,并让浏览器照常渲染。
标签: google-chrome google-nativeclient jbig2