使用javascript将bmp转换为jpeg

时间:2018-09-17 16:24:45

标签: javascript canvas bitmap jpeg client-side

我已经设法通过操纵颜色通道以获得8位图像来手动创建上传图像的位图。现在,我需要将位图转换为jpeg,但我需要保持位深度(8位深度单通道) 我不能使用Canvas,因为完成转换后,结果文件为24位深度。 任何人都知道是否可以使用JavaScript进行此转换,以便我可以在客户端进行所有图像处理?

1 个答案:

答案 0 :(得分:0)

我认为您在color depth和像素格式之间感到困惑,我承认这很令人困惑,因为这种Nbits命名法在各处都有所使用,而含义却完全不同。

例如,我们所谓的PNG-24实际上是8位* 3通道(RGB),而PNG-32是8位* 4(RGBA)。

但是简单地说,JPEG格式不支持索引颜色,它始终(至少)* TrueColor:3通道* 8bits =>〜1677万种颜色。
*自v9起,实际上每个通道最多支持12位

您想做什么(单个8位通道=> 256色)是不可能的,因为JPEG格式本身不支持它。

请注意,由于JPEG的工作原理(合并视觉上相似的颜色),将256色图像保存为JPEG毫无意义。 JPEG算法会重新创建原始256位图中没有的新颜色,并且最终可能会得到比其位图更大的文件。

因此,如果您真的想要一个具有单个通道(256色)的8位图像,请查看确实支持Indexed colors的格式。
PNG是其中之一,但是画布确实无法为您提供帮助,因为Canvas API仅支持PNG-32(每通道RGBA 8位)。
GIF是另一种,但我认为只有Safari才支持从canvas元素导出到GIF ...