Задача состоит в том, чтобы создать 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();
}
}
}
Когда я отлаживаю, я вижу, что в строке есть значения, я подозреваю, что они не хранятся правильно в файле. Любая помощь будет принята с благодарностью.