0
LibTiff.netライブラリを使用してTiff画像の一部を切り抜くために次のコードを使用しましたが、画像の色がfalseまたはpseudo colorsに変更されました。測光タグをYCBCRやPalleteのような他の可能なパラメータに変更しようとしましたが、結果は似ていました。元の画像と切り取られた画像がコードの下に添付されます。 この問題を解決するのに役立つと思います。LibTiff.netを使用してTIFFファイルをトリミングするときの画像の色を変更する
using (input)
{
int scanlineSize = input.ScanlineSize();
byte[][] buffer = new byte[height][];
int yy = height/hRatio;
int xx = width/wRatio;
int yEnd = yo + yy;
// read
int k = 0;
for (int i = yo; i < yEnd ; i++)
{
buffer[k] = new byte[scanlineSize];
input.ReadScanline(buffer[k], i);
k++;
}
// write
byte[][] bigHolder = new byte[height][];
byte[][] holder = new byte[yy][];
using (Tiff output = Tiff.Open("output.tif", "w"))
{
output.SetField(TiffTag.SAMPLESPERPIXEL, samplesPerPixel);
output.SetField(TiffTag.IMAGEWIDTH, xx);
output.SetField(TiffTag.IMAGELENGTH, yy);
output.SetField(TiffTag.BITSPERSAMPLE, bitsPerSample);
output.SetField(TiffTag.ROWSPERSTRIP, output.DefaultStripSize(0));
output.SetField(TiffTag.PHOTOMETRIC, photo);
output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
int j = 0;
int w = scanlineSize/wRatio;
for (int i = 0; i < yy; i++)
{
bigHolder[i] = buffer[i].Skip(xo).ToArray();
holder[i] = bigHolder[i].Take(w).ToArray();
output.WriteScanline(holder[i], j);
j++;
}
}
}
iriginakとトリミングされた画像のTiffTag.PHOTOMETRICタグ値とTiffTag.COMPRESSIONタグ値は何ですか? – Bobrovsky
私はgetFieldを使用して入力イメージからTiffTag.PHOTOMETRICを取得し、出力イメージに置き換えます。また、私の入力画像には圧縮モードが含まれていません。私は、色を変えるという関係があることを知りました。入力イメージと出力イメージに気付くと、赤は緑に、緑は青に、青は赤に変換されます。 –