【问题标题】:Java - Screenshots taken with robot class have different byte amountsJava - 使用机器人类截取的屏幕截图具有不同的字节数
【发布时间】:2018-04-29 01:03:25
【问题描述】:

当我使用机器人类获取屏幕的多个屏幕截图,然后将缓冲图像转换为字节数组时,字节数组的长度会有所不同,有时相差很大。这应该发生吗?我感觉好像每张图片的字节数都是一样的。

作为背景,我正在尝试加快一个简单的屏幕共享程序。现在我将每张图片作为一个完整的字节数组发送,它工作正常(但速度很慢)。我想将每张图片保存在缓冲区中,然后只发送从最后一张图片到下一张更改的字节数组中的更改和索引,从而减少通过套接字发送的数据。这是行不通的,因为每个屏幕截图都有不同大小的字节数组。

【问题讨论】:

  • 代码在哪里?
  • then convert the bufferedimage to a byte array, - 怎么样?发布您的minimal reproducible example 来证明问题。

标签: java arrays file byte awtrobot


【解决方案1】:

您的屏幕截图大小不同,因为它们的复杂程度不同。

您的问题中没有包含很多细节,所以我假设您使用的屏幕截图例程返回 PNG 图像。

PNG 格式不仅仅是一组(红、绿、蓝)数据,图像的每个像素都有一个条目。相反,该格式会压缩图像数据。这意味着(例如)只有单一平面颜色的图像将比每个像素都是不同颜色的图像小得多。

【讨论】:

  • 感谢您的明确答复。如果我想要一种没有压缩的格式,我会使用 TIFF 之类的格式吗?
  • 在你的位置上,我会看类似 BufferedImage 的 getRGB(int x, int y) 方法,你可以使用它来构建你想要的像素数组。
猜你喜欢
  • 2014-08-21
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
相关资源
最近更新 更多