Построение изображения из Grayvalues - PullRequest
1 голос
/ 07 февраля 2011

Я извлек серое значение из файла изображения (формат .3pi) и записал их в файл (код ниже) -

public class ImageFile {
public static void main(String[] args) throws IOException {
    FileInputStream fstream = new FileInputStream ("Z:\\20100204-000083-011.3pi");
    DataInputStream in = new DataInputStream (fstream);

    BufferedReader reader = new BufferedReader (new InputStreamReader (in));
    String str = "";
    String temp [];
    int counter = 0, NumberOfColumn = 0, NumberOfRow = 0;
    try {
      while (counter != 3) {
            str = reader.readLine();
            counter ++;
            if (counter == 2) {
                temp = str.split(" ");
                NumberOfRow = Integer.valueOf(temp[5].trim()).intValue();

            }
            else if (counter == 3) {
                temp = str.split(" ");
                NumberOfColumn = Integer.valueOf(temp[3].trim()).intValue();            
            }
        }
    } 

    catch (FileNotFoundException e){
        e.printStackTrace();
    }

    catch (IOException e) {
        e.printStackTrace();
    }

    //System.out.println ("Row : "+NumberOfRow);
    //System.out.println ("Column : "+NumberOfColumn);

    int found = 0, CurrentColumn = 0, CurrentRow = 0, GrayValue;
    int image [][] = new int [NumberOfRow][NumberOfColumn];

    FileInputStream fstream2 = new FileInputStream ("Z:\\20100204-000083-011.3pi");
    DataInputStream in2 = new DataInputStream (fstream2);
    BufferedReader reader2 = new BufferedReader (new InputStreamReader (in2));

    FileWriter fstream3 = new FileWriter("Z:\\Test.txt",true);
    BufferedWriter writer = new BufferedWriter (fstream3);
    while ((str = reader2.readLine()) != null) {            
        str = str.trim();
        temp = str.split(" ");
        if (temp [0].contentEquals("#:Profile:")) {
            CurrentColumn = Integer.valueOf(temp[1].trim()).intValue();
            //System.out.println ("Current Column : "+CurrentColumn);
            found = 1;
            continue;
        }
        else {
            if (found == 1) {
                CurrentRow = Integer.valueOf(temp[4].trim()).intValue();
                GrayValue = Integer.valueOf(temp[3].trim()).intValue();
                image [CurrentRow][CurrentColumn] = GrayValue;                  
            }
        }
    }
    for (int i= 0; i< NumberOfRow; i++){
        for (int j= 0; j< NumberOfColumn; j++){
            writer.write (image [i] [j]+" ");
        }
        writer.write("\n");
    }
    writer.close();
}

}

Теперь я хочу создатьJPG / BMP / любое другое изображение с информацией о значении серого в файле Test.txt.Как мне этого добиться?Помощь оценена.

Zereen

1 Ответ

0 голосов
/ 07 февраля 2011

Руководство по API ввода / вывода изображения Java должно содержать много полезной информации о вводе / выводе изображения в Java.

Если у вас есть данные пикселей (цвета, которые вы хотели бы использовать), вы можете использовать класс Graphics2D (часть AWT) для рисования на BufferedImage (часть AWT), как описано здесь . Затем вы можете использовать ImageIO для записи данных. Итак:

try {
    BufferedImage off_Image = 
    new BufferedImage(100, 50, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = off_Image.createGraphics(); 
    for (int i= 0; i< NumberOfRow; i++) {
        for (int j= 0; j< NumberOfColumn; j++) {
            g2.setColor(new Color(....)); // here convert the value in image[i][j] to aRGB
            g2.draw(new Rectangle(i, j, 1, 1);
        }
    }
    File outputfile = new File("saved.png");
    ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
    // handle exception
}
...