gpt4 book ai didi

javascript - 使用 javascript 将 bmp 转换为 jpeg

转载 作者:行者123 更新时间:2023-11-30 06:22:27 68 4
gpt4 key购买 nike

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

最佳答案

我认为您对 color depth 感到困惑和像素格式,我承认这很令人困惑,因为这个 Nbits 命名法到处都在使用,但具有完全不同的含义。

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

但简单来说,JPEG 格式不支持索引颜色,它始终(至少)* TrueColor:3 channel * 8 位 => ~1677 万种颜色。
*从 v9 开始,它实际上支持每个 channel 最多 12 位

你想做的(单8bits channel =>256色)是不可能的,因为JPEG格式本身不支持。

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

因此,如果您真的想要单 channel (256 色)的 8 位图像,请查看支持 Indexed colors 的格式。 .
PNG 是其中之一,但实际上 canvas 在这方面帮不了你,因为 Canvas API 仅支持 PNG-32(每 channel 8 位 RGBA)。
GIF 是另一个,但我认为只有 Safari 支持从 Canvas 元素导出到 GIF...

关于javascript - 使用 javascript 将 bmp 转换为 jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52372089/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com