Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java显示矩阵中的灰度图像_Java_Image Processing_Monochrome - Fatal编程技术网

用Java显示矩阵中的灰度图像

用Java显示矩阵中的灰度图像,java,image-processing,monochrome,Java,Image Processing,Monochrome,我试图读取一个文件,其中a有一个表示单色图像的矩阵,JAVA中的BuffereImage就是这样 final BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY); Graphics2D g = (Graphics2D)img.getGraphics(); ... /*reading from file*/ try (InputStream in =

我试图读取一个文件,其中a有一个表示单色图像的矩阵,JAVA中的BuffereImage就是这样

    final BufferedImage img = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_BYTE_GRAY);
    Graphics2D g = (Graphics2D)img.getGraphics();
    ... /*reading from file*/ 
    try (InputStream in = new FileInputStream("file.mac");
         Reader reader = new InputStreamReader(in, encoding);
         // buffer for efficiency
         Reader buffer = new BufferedReader(reader)) {
        int r;
        int i=0;
        int j=0;
        while ((r = buffer.read()) != -1) {
             g.setColor(new Color(?,?,?)); 
             g.fillRect(i, j, 1, 1);
             i++;
             if(i==WIDTH){
                 j++;
                 i=0;
             }
       }
    }

问题是我将在这一行
g.setColor(新颜色(?,?)中设置什么颜色
表示矩阵中灰度级别的get in
r
变量。

必须将颜色参数(红色、绿色和蓝色)设置为相同的值,以存档灰色。
Color
构造函数接受介于[0,255]之间的RGB值,因此必须缩放r值以匹配[0,255]比例:

int grey = r/rMax * 255 //Gives you a grey value between [0, 255];
rMax
是文件中最大的r值

然后将颜色设置为

g.setColor(new Color(grey, grey, grey));
为了提高整个过程的效率,我建议先创建一个灰色数组,以避免创建大量重复的
颜色
对象:

Color[] colors = new Color[256];

for (int i = 0; i <=255; i++) {
    colors[i] = new Color(i, i, i);
}
字符(不是字节)如何表示灰度级?
编码的值是多少?
g.setColor(colors[grey]);