我在netbeans平台上制作应用程序。我想绘制图像。我有红色,绿色和蓝色的图像像素。所以,请任何一个suugest给我,我怎么能用这个像素值绘制直方图?我的代码如下,其中我采用图像的红色,绿色和蓝色像素值。
enter code here
import java.awt.Component;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class WalkImageTest10 extends Component {
public static void main(String[] foo) throws IOException {
WalkImageTest10 wa= new WalkImageTest10();
}
public void printPixelARGB(int pixel) {
int alpha = (pixel >> 24) & 0xff;
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
//System.out.println(pixel);
}
private void marchThroughImage(BufferedImage image) {
int w = image.getWidth();
int h = image.getHeight();
int pixel;
System.out.println("width, height: " + w + ", " + h);
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
//System.out.println("x,y: " + j + ", " + i);
pixel = image.getRGB(j, i);
printPixelARGB(pixel);
//System.out.println("value of K:"+k+ " value of pixel: " + pixel[j][i]);
}
}
System.out.println("loop is completed");
}
public WalkImageTest10() throws IOException {
// this is an image of a white spot on a black background.
// with the smoothing in the image it's of course not all black
// and white
BufferedImage image =
ImageIO.read(new File("F:\\java\\aimages\\003.jpg"));
marchThroughImage(image);
}
}
答案 0 :(得分:3)
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.IOException;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.*;
public class FinalHistogram extends JPanel {
int[] bins = new int[256];
FinalHistogram(int[] pbins) {
bins = pbins;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
//g.drawLine();
for (int i = 0; i < 256; i++) {
System.out.println("bin[" + i + "]===" + bins[i]);
g.drawLine(200 + i, 300, 200 + i, 300 - (bins[i])/1000);
//g.drawLine(200 + i, 200, 200 + i, 200-(bins[i])/1500);
// System.out.println("bin["+i+"]==="+bins[i]);
}
}
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame();
frame.setSize(500, 500);
int[] pbins = new int[256];
int[] sbins = new int[256];
PlanarImage image = JAI.create("fileload", "image12.tiff");
BufferedImage bi = image.getAsBufferedImage();
System.out.println("tipe is " + bi.getType());
int[] pixel = new int[3];
int k = 0;
Color c = new Color(k);
Double d = 0.0;
Double d1;
for (int x = 0; x < bi.getWidth(); x++) {
for (int y = 0; y < bi.getHeight(); y++) {
pixel = bi.getRaster().getPixel(x, y, new int[3]);
d=(0.2125*pixel[0])+(0.7154*pixel[1])+(0.072*pixel[2]);
k=(int) (d/256);
sbins[k]++;
}
}
System.out.println("copleted" + d + "--" + k);
JTabbedPane jtp=new JTabbedPane();
ImageIcon im= new ImageIcon(bi);
//jtp.add("New image", new JLabel((im)));
jtp.addTab("Histogram",new FinalHistogram(sbins));
frame.add(jtp);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}