Java2D & Создание изображений - PullRequest
2 голосов
/ 19 июля 2010

Я хочу динамически создать изображение из Java и сохранить его в файл.Поскольку я читаю в различных уроках, мне нужно использовать BufferedImage.

Но для конструктора BufferedImage требуются высота и ширина в качестве параметров.Но я не знаю окончательный размер моего изображения.Как мне создать изображение заранее неизвестного размера?

Существуют две очевидные стратегии:

  1. Сначала создайте очень большое изображение, скажем, 10000x10000.
  2. Постепенносоздавая увеличенное изображение и копируя в него оригинал.Недостаток в том, что мне нужно проверять границы перед каждым добавлением чего-либо.

Как вы решаете эту проблему?

Ответы [ 2 ]

2 голосов
/ 19 июля 2010

Вы только что столкнулись с проблемой пространства и времени здесь.Я бы выбрал первую стратегию создания очень большого изображения 10000x10000, простая причина которого заключается во втором подходе, который, как вы говорите, включает в себя горы матричных копий, которых вы бы хотели избежать любой ценой.

Более того, сХорошее знание размера изображения позволяет в дальнейшем оптимизировать это значение от 10000 x 10000 до чего-то вроде 1000x1000.Если кажется, что изображение превышает это, удвойте его, как 2000 x 2000, и скопируйте старый на новый и продолжайте делать это по мере расширения вашего изображения. Это более проверенная стратегия, которая используется в знаменитой java.util.ArrayList

Таким образом, вы косвенно связываете компромисс между временем и пространством.И да, вам придется вычислять границы каждый раз, но это не выглядит для меня большой задачей, это можно сделать за O (1) раз.

0 голосов
/ 19 июля 2010

Конечно, мы не знаем специфики вашей проблемы, но простой подход может быть таким: Вы строите какую-то модель вашего изображения: какая фигура идет, где и насколько она велика.Исходя из этого, вы сможете рассчитать размеры всего изображения.

...