簡體   English   中英

如何在Java中讀寫ppm

[英]how to read and write a ppm in Java

我正在解決舊考試。 在Java中,我想打開一個圖像文件input.ppm,將其轉換為灰度,然后將其另存為output.ppm。 因此,我必須讀取所有內容(每個像素的RGB信息),取平均值並將其保存3次,以使像素變為黑白。

以下代碼無法正常工作。 寬度和高度不正確。 同樣,文件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); } 
    }    
}

以下添加的是一個ppm文件的三個示例,其中兩個是我使用GIMP從png創建的。 http://www.sendspace.com/filegroup/HcY7Mks9SXtr9mKniVe8lSIEnYLGwsT5

請參閱ppm格式的說明。 因此錯誤是它以text開頭,並且您正在使用二進制輸入。 從文本開始然后切換到字節的樂趣,我留給您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM