2012-05-24 23 views
0

有人可以请建议如何保存bgr101010格式.tiff文件在32bpp?我的代码保存在48bpp?基本上我想保存TIFF一个10位颜色深度的文件。writeableImage bgr101010不保存在32bpp而是保存在48bpp

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); 
} 

    } 
+0

'bgr101010'听起来不像32位,即使它们加起来只有32位数据。留下它作为评论,以防我被证明是错误的,但是.. – Blindy

回答

1

粗略地看一眼在TiffBitmapEncoder的反编译来源表明,它调用实际写入TIFF一个本地方法。如果即使在显式传递PixelFormat来写入它时选择写入其他内容,也可能是底层TIFF编码器的限制。

您是否尝试过使用ImageMagick或类似的TIFF支持?

+0

这听起来合法,谢谢 – Raj

相关问题