【发布时间】:2012-11-03 09:25:01
【问题描述】:
我需要将一个巨大的图像(用于访问颜色等的 BufferedImage)放入 JScrollPane 派生类中。在那之前没有什么很难的。
该图像是 A3 材料样本的 JPG 扫描,其大小为 13030x20840 像素,24 位,磁盘上的重量为 12MB -> RAM 中约为 800MB。
我将 BufferedImage 嵌入到一个 Jpanel 中,它作为 Scrollpane 的视图。
当我尝试滚动/拖动我的图像时,响应需要几秒钟,所以不是很方便。
我需要您的帮助,以便了解我应该如何使滚动窗格的滚动和图像拖动尽可能平滑和反应灵敏,但我很容易发现,使用这样的图像可能是不可能的。
我尝试了很多选项,例如双缓冲等。但是我对 Swing 还很陌生,那么很可能我错过了一些简单的解决方案。
如果需要通过其他方式或其他方式更改 BufferedImage,我可以接受任何解决方案。
【问题讨论】:
-
解压缩到图像缓冲区后大小约为 750MB,而不是 12MB 的图像。
-
@Jim Garrisson:确切地说,我重写了它。感谢您关注这个细节。
-
将您的图像分解为图块。 256 像素 x 256 像素的图块很常见。仅显示适合滚动窗格的图块。当滚动窗格滑块移动时,显示不同的图块。
-
我已经在之前的尝试中这样做过,但它使用的是不同的编程语言。我真的不知道如何将图块放在滚动窗格中 -> 布局?
-
您从图块构建缓冲图像,并像现在一样显示缓冲图像。唯一的技巧是在用户滚动时构建一个新的缓冲图像,并在滚动窗格中正确定位新的缓冲图像。
标签: java image jpanel jscrollpane bufferedimage