0

有人可以建议如何以.tiff32bpp 保存 bgr101010 格式文件吗?我的代码以 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 回答