java - 在 Java 中创建和绘制巨大的(缓冲的)图像

标签 java image-processing java-2d

我正在开发一个绘制矩阵的应用程序 - 使用 Java 2D - 它可以变得非常大,例如 30000 x 30000 像素。 此时此刻,我已经对 BufferedImage 进行了一些试验,但创建如此巨大的 BufferedImage 会导致内存不足异常,即使在扩大堆时也是如此。 现在我正在考虑将图像拆分为多个图像/区域,当我在某个区域完成后将其写入磁盘并创建一个新的区域/BufferedImage 并继续绘制。 我对其他人如何处理这件事的想法很感兴趣。我已经离开 Java 一段时间了,所以欢迎任何具体的例子。

最佳答案

我为一个新的/小型开源项目做出贡献,它可能非常适合您的需求。

项目是Glimpse .它旨在帮助构建 Java 中的 2D 数据可视化,重点是很好地处理大型数据集,并使其易于提供实时交互性以允许轻松探索数据。

Glimpse Head Map

它利用 OpenGL利用现代 GPU 上的硬件功能(如纹理内存和着色器)来实现上述目标。因此,如果您打算使用 Java2D,那么这对您不起作用。但是,Glimpse 面板可以与其他 Swing 组件并排放置,因此很容易将其放入现有的 Swing GUI 中。唯一需要注意的是,您需要一 block 像样的显卡。

该图像是一个大型数据矩阵的示例,其着色通过右侧的色标动态调整(矩阵数据存储在 GPU 纹理中,动态重新着色通过自定义着色器完成) .此示例的来源是 HeatMapExample.java .还有许多其他类似示例,它们为使用 Glimpse 的其他功能提供了起点。

您可以在 glimpse.metsci.com 了解更多信息.首页上有一个介绍视频,以及Java WebStart examples。 .源托管在 GitHub 上.

关于java - 在 Java 中创建和绘制巨大的(缓冲的)图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439324/

相关文章:

java - 无法使用 selenium (java) 自动化在 Firefox 浏览器中右键单击

java - RxJava2 : How to wait all Flowables in a list to finish?

java - java中图像直方图的方差

java - Java Swing中的Graphics2D填充方法

java - cvtColor 崩溃 android

java - 处理 api 中的线程数

python - DICOM 文件的医学图像质量问题

android - 图像处理算法在安卓智能手机上的性能

java - 在 Java2D 中绘制子类的哪个组件(对于 2D 游戏)

image - 提升图像上传,调整大小,存储在数据库中,显示