0

インターネットで調べましたが、答えが見つかりませんでした。畳み込みを行うために BufferedImage として使用する pgm ファイルがあります (そのために JAI を使用します) が、それを pgm ファイルに保存するのに問題があります。これまでのところ、次のコードを使用して保存しました。

JAI.create("filestore", newImage, outputFileName);

これで pgm ファイルを取得できますが、画像を開くと、IfranView から、拡張子が正しくない TIF ファイルであることがわかります。何を変更する必要がありますか?

どんな助けにも感謝します!可能であればコード例を提供してください。みんな、ありがとう。

よろしく、 スタニエル

4

4 に答える 4

0

遅いかもしれませんが、1つだけ書きました。[0.0,1.0] の範囲の値を持つ 2d-double 配列を取る単純な PGM ライター。

    public static void WritePGM(string fileName, double[,] bitmap)
    {
        var width = bitmap.GetLength(0);
        var height = bitmap.GetLength(1);
        var header = "P5\n" + width + " " + height + "\n255\n";
        var writer = new BinaryWriter(new FileStream(fileName, FileMode.Create));
        writer.Write(System.Text.Encoding.ASCII.GetBytes(header));
        for (var j = 0; j < height; j++)
        {
            for (var i = width-1; i >= 0; i--)
            {
                var c = (byte)(System.Math.Max(System.Math.Min(1.0, bitmap[i, j]), 0.0) * 255.0);
                writer.Write(c);
            }
        }
        writer.Close();
    }
于 2016-03-03T20:47:07.733 に答える
0
BufferedImage bufferedImage = ImageIO.read(new File("input file directory...image.png"));

ImageIO.write(bufferedImage, "pgm", new File("output file directory.....image.pgm"));

これは、バッファリングされた画像 (jpeg、png... など) を取得し、適切に pgm に変換する必要があります。

編集: .pgm ファイルを ImageIO で使用できるようにする JAI プラグインは、http : //www.oracle.com/technetwork/java/index.html にあります。

于 2015-05-27T18:49:24.533 に答える
0

これが私が見つけた例です。未検証。

// Create the OutputStream.
OutputStream out = new FileOutputStream(fileToWriteTo);
// Create the ParameterBlock.
PNMEncodeParam param = new PNMEncodeParam();
param.setRaw(true.equals("raw"));
//Create the PNM image encoder.
ImageEncoder encoder = ImageCodec.createImageEncoder("PNM", out, param);

PNM ファイルの書き込みを参照してください。

于 2015-05-28T07:30:58.437 に答える
0

私は答えを見つけました。外部の JAI imageio をライブラリに既に追加しました。

ImageIO.write(bufferedImage, "pnm", new File("output file directory.....image.pgm"));

「pgm」の代わりに「pnm」と表示する必要があります。新しいファイルには自動的に pgm 拡張子が付きます。

于 2015-06-01T17:00:09.677 に答える