2010-07-19 81 views
2

我想從Java動態創建一些圖像並將其保存到文件。 正如我在各種教程中閱讀,我需要使用BufferedImage。Java2D和圖像創建

但是,BufferedImage構造函數要求高度和寬度作爲參數。但我不知道我的形象的最終大小。我應該如何創建一個大小未知的圖像?

有兩個明顯的策略:

  1. 創建最初是一個非常大的圖像,說10000x10000。
  2. 逐漸創建較大的圖像,並將原件複製到它。缺點是我需要在每次添加內容前檢查邊界。

你是如何處理這個問題的?

回答

2

你剛剛在這裏遇到空間與時間問題。我打算制定一個非常大的圖像10000x10000的第一個策略,簡單的理由是你說的第二種方法涉及山區的矩陣副本,你會不惜一切代價避免。

此外,對圖像大小有很好的瞭解,您可以進一步將10000 x 10000的值優化爲最初的1000 x 1000。如果圖像看起來超過了這個數字,那麼將其加倍爲2000 x 2000,然後將舊圖像複製到新圖像上,並在圖像展開後繼續進行此操作。這是一種經過驗證的策略,用於着名的java.util.ArrayList

通過這種方式,您可以間接縮短時間和空間的平衡。是的,你必須每次計算界限,但這對我來說並不是什麼大事,可以在O(1)時間內完成。

0

當然,我們不知道你的問題的具體情況,但一個簡單的方法可能是這樣的:你建立一個你的形象的模型:哪個形狀去哪裏,有多大。從中你應該能夠計算出整個圖像的尺寸。