0
나는 오래된 시험을 해결하고 있습니다. Java에서는 이미지 파일 input.ppm을 열고 그레이 스케일로 변환 한 다음 output.ppm으로 저장하려고합니다. 그래서 모든 내용 (각 픽셀의 RGB 정보)을 읽고 평균값을 취하여 세 번 저장해야 픽셀이 검은 색이됩니다. & 흰색.Java에서 ppm을 읽고 쓰는 방법
다음 코드는 제대로 작동하지 않습니다. 너비와 높이가 올바르지 않습니다. 또한 output.ppm 파일은 비어 있습니다. 그리고 RGB 값이 올바르게 읽히지 않습니다.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class slika {
public static void main(String[] args){
File input = new File("input.ppm");
File output = new File("output.ppm");
try{DataInputStream in = new DataInputStream(new FileInputStream(input));
DataOutputStream out = new DataOutputStream(new FileOutputStream(output));
in.read();
int w=in.readInt(); //System.out.println("width="+w);
int h=in.readInt(); //System.out.println("height="+h);
in.read();
for(int i=0; i<w*h; i++){
int r=in.read(); //System.out.println("red="r);
int g=in.read(); //System.out.println("green="g);
int b=in.read(); //System.out.println("blue="b);
int avg=(r+g+b)/3; //greyscale pixels
out.write(avg);
out.write(avg);
out.write(avg);
}
in.close();
out.close();
} catch (IOException ex) { System.err.println(ex); }
}
}
다음은 김프를 사용하여 png에서 만든 두 개의 ppm 파일의 세 가지 샘플입니다. http://www.sendspace.com/filegroup/HcY7Mks9SXtr9mKniVe8lSIEnYLGwsT5
참고로 [ppm2pgm] (http://netpbm.sourceforge.net/doc/ppmtopgm.html)은'.299 r + .587 g + .114 b'를 사용합니다 (이 사람의 인용문을 꼭 읽으십시오 페이지도 참조하십시오. 참조를받지 못한 경우 - https://www.youtube.com/watch?feature=player_detailpage&v=SWAmICTFSok#t=53) –