【发布时间】:2016-11-22 01:52:50
【问题描述】:
让我解释一下我的问题。我有一项服务可以进行一些数学计算(非常非常困难)。这是某种统计计算。此服务返回布尔值的二维数组 (boolean [][] 400x400)。在我创建对应于该数组的图像后:
BufferedImage im = new BufferedImage( area.length, area.length, BufferedImage.TYPE_INT_RGB );
Graphics2D g2 = in.createGraphics();
g2.setColor( Color.BLACK);
for ( int i = 0; i < area.length; i++ ) {
for ( int j = 0; j < area.length; j++ ) {
if ( area[ i ][ j ] ) {
g2.fillRect( j, i, 1, 1 );
}
}
}
ImageIO.write( im, someformat, somefile );
代码很简单。结果我创建了 Pic1(见附件)。黄色边框只是例如黄色点(图像像素)。 我还想向您展示一些布尔数组的内容(这只是示例,我将打印 true 为 1 和 false 为 0 ):
{ 0,.0,............. .... ............0 }
.................... ...
{ 0,0,0,0,0,1,1,.... .... ............0 }
{ 0,0,0,1,1,0,1,.... .... ............0 }
{ 0,0,1,1,0,0,0,1,1, .... ............0 }
{ 0,0,0,1,0,0,0,1,0, .... ............0 }
..................................
{ 0,.0,............. .... ............0 }
因此,正如我所说的那样,我得到了 Pic1。是的,我知道这张照片看起来很奇怪。在实践中,它可以是任何形状,但它始终是封闭的。这张图片看起来很丑,相反我想把它画成一条有一定宽度且没有任何粗糙度的曲线。我试图在 Pic2 上展示它(是的.....它也很丑......我的画很糟糕)。
我在图像处理方面的技能和知识很差,我绝对需要帮助和澄清。可能根本不可能使用 Java 实现我的目标。我不知道。可能有一些图书馆或其他可以帮助我的东西。
我会感谢任何回复和帮助,谢谢。
【问题讨论】:
-
您可以将 [i,j] 处的“1”视为点 (x = j, y = i),并使用一系列贝塞尔曲线或样条线对其进行插值。
-
按“-1”很容易,但你能用例子来扩展你的答案吗?我给出了数组示例,因为在值“1”的点周围也有值“1”的点,问题也是我不知道顺序。这些点。在这个数组中,我不知道后面跟着选定的 [ i,j ] 点的点。我正在尝试解决我的问题,但没有提高我的评分。
标签: java image bufferedimage graphics2d