Создайте 24-битное изображение RGB ppm в java - PullRequest
0 голосов
/ 29 октября 2018

Задача состоит в том, чтобы создать 24-битное изображение RGB ppm и сохранить его в байтовом массиве. Кажется достаточно простым, я сделал это с jpg и понял это правильно с первой попытки. ppm, похоже, не копирует в файл, файл создан, но пуст. Я изменил его с FileOutputStream на BufferedWriter и до сих пор ничего.

Вот код:

public class test
{

   private static int width = 100;
   private static int height = 100;
   private static String matrix="";



    public static void main (String[]args) {

        matrix +="P6\t" + width + "\t" + height + "\t255\t";

        for (int x=0; x<=height; x++) {
            for ( int y=0; y<=width; y++) {
                int  R = (int) (Math.random()*256);//(Math.min(x,height-x)/ height * 2)*256;
                int G = 0;
                int B = 0;

               int val = (int)(R<<16) | (G<<8) | B;

                matrix += ""+val+"\t" ;

            }
            matrix +="\n";
        }

        try {
            //FileOutputStream fos = new FileOutputStream("Imagee.jpg");
            BufferedWriter fos = new BufferedWriter(new FileWriter("Imagee.jpg"));
            for (int x=0; x<=height; x++) {
                for ( int y=0; y<=width; y++) {
                fos.write(Integer.toHexString(Byte.toUnsignedInt(matrix.getBytes()[y]))+"\t");
                }fos.newLine();
            }
             fos.close();
            if(fos==null){System.out.println("Image has not been created correctly");}

        } catch(IOException error) {
            System.out.println("\nError!");
            error.getCause();
        }

    }

}

Когда я отлаживаю, я вижу, что в строке есть значения, я подозреваю, что они не хранятся правильно в файле. Любая помощь будет принята с благодарностью.

...