0

bgr101010 形式.tiffのファイルを 32bpp で保存する方法を教えてください。私のコードは 48bpp で保存されますか? 基本的には、10 ビットの色深度で tiff ファイルを保存したいと考えています。

private void Bgr()
{
BitmapImage myBitmapImage = new BitmapImage();
BitmapSource bs = new BitmapImage(new Uri(@"img\android1.png", UriKind.Relative));

int stride = bs.PixelWidth * (bs.Format.BitsPerPixel / 8);

byte[] data = new byte[stride * bs.PixelHeight];
bs.CopyPixels(data, stride, 0);


WriteableBitmap w2Bmp = new WriteableBitmap(bs.PixelWidth, bs.PixelWidth, 96.0,  96.0,PixelFormats.Bgr101010, null);

 w2Bmp.WritePixels(
  new Int32Rect(0, 0, bs.PixelWidth, bs.PixelHeight),
  data, stride, 0);


image1.Source = w2Bmp;
var encoder = new TiffBitmapEncoder();
BitmapFrame frame = BitmapFrame.Create(w2Bmp);
encoder.Frames.Add(frame);

using (var stream = File.Create("XXX3.tiff"))
{
encoder.Save(stream);
}

    }
4

1 に答える 1

1

逆コンパイルされた TiffBitmapEncoder のソースをざっと見てみると、ネイティブ メソッドを呼び出して実際に TIFF に書き込むことがわかります。書き込む PixelFormat が明示的に渡された場合でも、何か他のものを書き込むことを選択した場合は、基礎となる TIFF エンコーダーの制限である可能性があります。

ImageMagickなどを TIFF サポートで使用してみましたか?

于 2012-05-25T15:15:18.280 に答える