Я работаю над приложением, которое рисует матрицу - с использованием Java 2D - которая может стать довольно большой, например 30000 x 30000 пикселей. В этот момент я немного экспериментировал с BufferedImage, но создание такого огромного BufferedImage вызывает исключения из памяти даже при увеличении кучи. Теперь я думал о том, чтобы разделить изображение на несколько изображений/регионов, и когда я закончил работу в определенном регионе, напишите его на диск и создайте новый регион/BufferedImage и продолжите рисование. Мне интересны мысли других людей о том, как они справятся с этим. Некоторое время я был вне Java, поэтому любые конкретные примеры приветствуются.Создание и рисование огромных (буферизованных) изображений в Java
ответ
Я вношу свой вклад в создание нового/небольшого проекта с открытым исходным кодом, который может быть очень хорошо подходит для ваших нужд.
Проект Glimpse. Он призван помочь в построении 2D-визуализации данных в Java с уделением особого внимания обработке больших наборов данных и упрощению интерактивности в режиме реального времени, позволяющей легко исследовать данные.
Он использует OpenGL, чтобы воспользоваться аппаратными особенностями современных графических процессоров, таких как память текстуры и шейдеры для достижения вышеуказанных целей. Поэтому, если вы используете Java2D, это не сработает для вас. Тем не менее, панели Glimpse могут быть размещены бок о бок с другими компонентами Swing, поэтому легко попасть в ваш существующий графический интерфейс Swing. Единственное, что вам нужно, - это достойная видеокарта.
Изображение представляет собой пример большой матрицы данных, окраска которой динамически регулируется с помощью цветовой шкалы справа (данные матрицы хранятся в текстуре графического процессора, а динамическая перекраска выполняется с помощью пользовательского шейдера). Источником для этого примера является HeatMapExample.java. Существует множество других примеров, которые дают начало для работы с другими функциями Glimpse.
Узнать больше об glimpse.metsci.com. На первой странице есть встроенное видео, а также Java WebStart examples. Источник размещен по адресу GitHub.
Интересно, обязательно изучите это. Благодарю. – RBaarda
, если вы просто хотите создать образ на диске, а затем посмотреть на pngj - он может генерировать больших PNG изображения без каких-либо проблем, так как он пишет строку пикселей на диск, поскольку они доступны. api немного png-specific, но он не слишком сложный (он может помочь прочитать немного фона в формате png-изображения, прежде чем использовать его).
Спасибо за ваш ответ. Я просмотрел pngj, но я все еще выясняю, как вы могли бы нарисовать, например, BufferedImage на диске, используя pngj. – RBaarda
вы бы этого не сделали. Я думал, проблема в том, что буферизованное изображение занимает слишком много памяти? pngj избегает этого - вы пишете пиксели непосредственно на диск. извините, если я неправильно понял. –
Извините за то, что вы сбиваете с толку, но вы правы в этом. Позвольте мне сказать так: как вы будете использовать Java 2D api вместе с PNGJ? – RBaarda
- 1. Создание огромных изображений
- 2. XNA: создание огромных изображений
- 3. Набор буферизованных изображений RGB не работает - JAVA
- 4. Загрузка и анимация огромных изображений
- 5. Java - Два буферизованных автора
- 6. Обработка огромных растровых изображений
- 7. Рисование/создание векторных изображений из приложения
- 8. Рисование изображений
- 9. Рисование изображений?
- 10. отображение действительно огромных изображений в отчетах яшмы
- 11. Рисование и анимация сетки изображений
- 12. Рисование и создание прямоугольных растровых изображений с использованием Direct2d
- 13. мыши, рисование и слайдер изображений
- 14. Рисование изображений в ListView
- 15. Рисование изображений в C#
- 16. создание альфа-изображений в java
- 17. Создание изображений значков в Java
- 18. Рисование фигур и изображений в диалоге libgdx
- 19. Чтение и запись огромных файлов в java
- 20. Просмотр огромных прокручиваемых изображений в изображении?
- 21. Рисование SVG-изображений на JPanel
- 22. Создание Java2D и изображений
- 23. Рисование изображений для документации
- 24. Рисование изображений из массива
- 25. Рисование текста в библиотеке изображений
- 26. Обработка огромных файлов в java
- 27. Рисование изображений в пользовательском ComboBox
- 28. Отправка буферизованных изображений между Java-клиентом и сервером сокетов Twisted Python
- 29. Рисование растровых изображений в android
- 30. Как сделать создание изображений масштабируемым на Java?
Можете ли вы разместить свой код? – eabraham