在Java中显示数百万图像的最佳方法是什么?

时间:2013-01-22 20:48:08

标签: java swing imageview javafx

你看到了吗?

enter image description here

每个房子的每块砖都是16x16像素的图像。

你可以在这里看到一个基于简单JavaFX的版本,一些Imageview在X和Y上移动以产生“构造”的效果。

我只是使用Swing将其修改为paintComponent

问题: - 使用JavaFX:我的电脑有问题。您在图片上看到的内容需要2秒才能加载,然后移动速度非常慢且不稳定。 - 使用Swing:我不知道如何根据亮度,阴影等来调整每个块。所以它看起来像这样:

enter image description here

我应该选择哪种方法?两者都有很大的缺点。我本来希望保留JavaFX方法,但也想找到除Imageview之外的其他东西。这应该不是一个好主意。

1 个答案:

答案 0 :(得分:1)

  

在图像被绘制之前修改模糊/亮度等等

我自己没有使用它,但这里有一个提示 - 使用Swing / AWT Kernel + ConvolveOp机制:http://www.java-tips.org/java-se-tips/java.awt.image/styling-digital-images-with-convolveop.html

BufferedImage biSrc = ...
BufferedImage biDest = ...

float[] data = new float[] { 0.0625f, 0.125f, 0.0625f, 0.125f, 0.25f, 0.125f, 0.0625f, 0.125f, 0.0625f };
Kernel kernel = new Kernel(3, 3, data);
ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
convolve.filter(biSrc, biDest);

操作通过3x3矩阵(数据)定义。你可以搜索brigthness,blur等的例子。

  

图片需要2秒才能加载,但在

之后移动非常缓慢和生涩

使用Dirty Rectangles算法:Dirty Rectangles