我正在寻找一种方法来将bmp图像编码为tiff或其他标准的,压缩但无损的格式在浏览器中(javascript)。我想如果最坏的情况发生,我可以自己编写一个库(从canvas元素中获取数据),但我希望:或者有更好的方法,或者其他人已经写过类似的东西(我找不到一个库)。
我有用户想要上传〜4mb(8位单色)bmp文件,我可以用LZW无损压缩到~700kb tiff文件(甚至更好~300kb无损JPEG-2000)。我希望在上传文件之前执行此操作以节省转移成本/时间。
在你问之前,我不是在讨论无损编码而不仅仅是使用高比特率JPEG。这些是用于分析的天文照片,因此它们无法处理所引入的任何压缩伪像。
谢谢, 强尼
答案 0 :(得分:2)
使用PNG。它是无损的并且使用zlib压缩。甚至有像pngcrush这样的程序会优化图像的大小(唯一的问题是这需要一段时间)。
你是否有任何理由在这个过程中使用JavaScript?如果你在Java applet中使用它(使用与java.awt.Image
类接口的库),或者将它上传到执行图像处理并返回压缩图像的服务器,那么从长远来看会不会更容易?
编辑:请不要使用Java小程序;该技术不再受到良好支持。
答案 1 :(得分:1)
如果您愿意尝试新的东西,可以尝试我创建的新的无损压缩算法;通过Java小程序,可以在浏览器中可视化压缩图像。您可以使用Javascript来触发applet的加载,或者直接操作Java代码(程序是开源的)。对于许多图像,压缩率将优于无损Jpeg 2000.网站地址为http://www.researchandtechnology.net/bcif/。
如果您想使用一些众所周知的标准,那么我同意安非他命:使用PNG将是最佳选择。
这么久, 斯特凡诺