gpt4 book ai didi

Java:通过低位深度的Socket发送BufferedImage

转载 作者:行者123 更新时间:2023-11-30 05:13:42 25 4
gpt4 key购买 nike

我认为标题已经足够了。我有一个全质量的 BufferedImage,我想通过一个低输出流发送它位深度。我不希望算法逐像素改变质量,因此它仍然是全质量。

因此,目标是通过 OuputStream 写入图像(具有全分辨率、全尺寸),这需要很少的字节数来写入。

谢谢,
马丁

最佳答案

您需要将图像数据编码为具有适合您的图像特征的格式。如果它是 24 位颜色并且有很多颜色,并且您不想损失质量,那么您可能会坚持使用 PNG,但请考虑无损 JPEG 2000。

如果你可能会失去一些质量,那就尝试一下

  1. 有损 JPEG 2000 - 在相同质量损失的情况下比 JPEG 小得多
  2. 减少颜色数量并使用颜色映射格式

如果图像仅包含灰度或黑白数据,请确保对其进行编码(8 位灰度或 1 位黑白)。然后,确保您使用的编码器适合该类型的格式(例如带有 Group 4 的 TIFF 或 JBIG2)。

另一个不错的选择是从图像中删除所有不需要的元数据(或确保您的编码器没有放入任何元数据)。

如果您想坚持使用 Java 中的内容,您可能必须使用 TIFF、PNG 或 JPEG —— 有第三方图像编码器(例如,我的公司 Atalasoft 制作了这些高级图像的 .NET 版本)编码器——也有 Java 供应商)

仅供引用:减少位深度通常意味着降低质量(除非降低没有意义)。例如,如果我有一个 24 位彩色图像,但所有颜色都是灰色的(其中 R==G==B),那么减少到 8 位灰色不会损失质量。如果您的图像具有 256 种不同颜色的任意集合并且您切换到颜色映射(索引或调色板)格式,情况也是如此。您减少了字节数,但不会降低质量。

关于Java:通过低位深度的Socket发送BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403769/

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