Java2D&图像创建

时间:2010-07-19 07:22:30

标签: java image drawing resize awt

我想从Java动态创建一些图像并将其保存到文件中。 正如我在各种教程中所读到的,我需要使用BufferedImage。

但是,BufferedImage构造函数要求将height和width作为参数。但我不知道我的图像的最终尺寸。我应该如何创建一个大小未知的图像?

有两个明显的策略:

  1. 最初创建一个非常大的图像,比如10000x10000。
  2. 逐渐创建更大的图像,并将原件复制到其中。缺点是我需要在每次添加内容之前检查边界。
  3. 你如何处理这个问题?

2 个答案:

答案 0 :(得分:2)

你刚刚遇到太空与时间问题。我想要制作一个非常大的图像10000x10000的第一个策略,简单的原因是你说的第二种方法涉及大量的矩阵副本,你可以不惜一切代价避免它。

此外,在充分了解图像大小的情况下,您可以进一步优化10000 x 10000的值,最初为1000x1000。如果图像看起来超过这个,请将其翻倍,如2000 x 2000并将旧版本复制到新版本,并在图像展开时继续执行此操作。这更像是着名的{{1}中使用的经过验证的策略}

通过这种方式,你间接地弥合了时间与空间的权衡。是的,你必须每次计算界限,但对我来说这看起来不是一项大任务,可以在O(1)时间内完成。

答案 1 :(得分:0)

当然我们不知道你的问题的具体细节,但一个简单的方法可能是这样的:你建立你的图像的某种模型:哪个形状在哪里以及它有多大。从那以后你应该能够计算出整个图像的尺寸。