java - 如何缩小 BufferedImage 的大小和质量?

标签 java image screenshot screen-capture

我正在做一个项目,一个名为“远程桌面控制”的客户端-服务器应用程序。我需要做的是截取客户端计算机的屏幕截图并将此屏幕截图发送到服务器计算机。我可能需要每秒发送 3 到 5 张图像。但考虑到直接发送 BufferedImage 对进程来说成本太高,我需要减小图像的大小。图像质量不需要损失更少。

如何减小图像的字节大小?有什么建议吗?

最佳答案

您可以使用 GZIPInputStream 很容易地用 ZIP 压缩它及其在套接字另一端的输出对应物。

编辑:

另请注意,您可以创建用于传输的 delta 图像,您可以使用“透明颜色”(例如魔法粉色 #FF00FF)来指示屏幕的那部分没有发生任何变化.另一方面,您可以在最后一张图像上绘制新图像,而忽略这些神奇像素。

请注意,如果图片已经包含此颜色,您可以将真正的粉红色像素更改为 #FF00FE。这是不明显的。

另一种选择是为每个图像传输一个1 位掩码(在将不变像素绘制为任意颜色之后。为此,您可以更改主要用于图片以产生最佳压缩比(最佳霍夫曼编码)。

关于java - 如何缩小 BufferedImage 的大小和质量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11860266/

相关文章:

java - 在适当的地点返回

java - 使用 LibGDX 创建的 PNG 中的颜色失真

java - JPA,如何插入具有ManyToMany关系的新实体?

java - 评估随机生成的字符串格式的数学方程并得到答案

java - 如何让我的组件位于我绘制的 JFrame 之上?

javascript - 捕获 Internet Explorer 中当前事件选项卡的图像并将其传递给 Flex 应用程序

android - 如何防止 Android 或 React-Native 应用程序中的屏幕截图

ios - 如何防止使用 quicktime 录制 iOS 屏幕

java - 这个枚举查找映射有什么问题?

image - Intervention\Image\Exception\ImageNotWritableException 使用 Laravel 4