绘制直方图

时间:2012-03-29 18:55:15

标签: java image jpeg histogram

我想画一个JPEG系数直方图

//coeff[] is the coefficients array
int hist[]=new int[25];
for(int i=0;i<coeff.length;i++)
hist[coeff[i]]++;

现在我想绘制条形图直方图的hist数组,但我不知道有什么功能吗? 提前谢谢

1 个答案:

答案 0 :(得分:5)

当你有一个JFrame或类似的东西时,你可以覆盖paint(Graphics g)方法。然后你可以像这样绘制条形图:

@Override
public void paint(Graphics g)
{
  super.paint(g);
  final int barwidth = 20;
  for(int i=0;i<25;i++){
    g.fillRect(i*barwidth , 0, barwidth , hist[i]*10);
  }
}

以下是JLabel的示例:

class Histogram extends JLabel{

//... make hist visible for this class

  @override
  protected void paintComponent(Graphics g){
    super.paintComponent(g);
    final int BAR_WIDTH = 20;
    final int X_POSITION = 0;
    final int Y_POSITION = 200;
    for(int i=0;i<25;i++){
      g.fillRect(X_POSITION +i*BARWIDTH , Y_POSITION , BAR_WIDTH , -hist[i]*10);
    }
  }
}

然后你可以像这样将它添加到大型机:

Histogram histogram = new Histogram();
add(histogram);

当回答你的问题时,请标记主题,谢谢。