0

画像のピクセルを画像ボックスから TIFF ファイルにコピーしたいと思います。TIFFタグも使いたいのでLibTiff.Netを使っています。

MemoryStream最初にイメージボックスからイメージをコピーしてからメモリストリームをバイト配列にコピーし、最後にバイト配列からバイトをTIFFファイルに書き出すだけだと思いました。しかし、私はそれを行う方法がわかりません。

すべてのプロセスを実行しましたが、ファイルに含まれているのは「バーコード」のようなものだけです。ああ、32 ビット浮動小数点の出力ファイルが必要です。

これが私がこれまでに得た場所です:

Tiff output = Tiff.Open(filename, "w");
if (output == null)
{
    return;
}
else
{
    MemoryStream ms = new MemoryStream();

    this.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);

    byte[] buff = ms.GetBuffer();

    output.SetField(TiffTag.IMAGEWIDTH, width);
    output.SetField(TiffTag.IMAGELENGTH, height);
    output.SetField(TiffTag.SAMPLESPERPIXEL, 1);
    output.SetField(TiffTag.BITSPERSAMPLE, 32);
    output.SetField(TiffTag.SAMPLEFORMAT, 3);
    output.SetField(TiffTag.ORIENTATION, BitMiracle.LibTiff.Classic.Orientation.TOPLEFT);
    output.SetField(TiffTag.ROWSPERSTRIP, height);
    output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
    output.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISBLACK);
    output.SetField(TiffTag.COMPRESSION, Compression.NONE);
    output.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB);

    for (int i = 0; i < height; ++i)
        output.WriteScanline(buff, i);

    ms.Close();
    output.Close();
}
4

1 に答える 1

1

私はプログラミングの経験がほとんどありませんが、Google でランダムにあなたの質問を見つけました。

ソース画像が圧縮されているため(.jpgなど)、ピクセルデータ自体ではなく、圧縮されたデータをメモリストリームとtiffファイルにロードするため、バーコードを取得していると思います。

画像を圧縮されていないビットマップ ファイルに変換して、やり直してみてください。

于 2013-07-06T08:56:44.713 に答える