1

我尝试以图像格式保存我的本地报告。但我发现DeviceInfo' 的ColorDepth设置不起作用。

 string mime, encoding, fileNameExtension;
 string[] streams;
 Warning[] warnings;
 byte[] bytes = report.Render("IMAGE", @"<DeviceInfo><OutputFormat>TIFF</OutputFormat><ColorDepth>8</ColorDepth><StartPage>0</StartPage></DeviceInfo>", out mime, out encoding, out fileNameExtension, out streams, out warnings);

 FileStream fs = new FileStream("C:\\imgRep.tiff", FileMode.OpenOrCreate);
 fs.Write(bytes, 0, bytes.Length);
 fs.Close();

ColorDepth值无关,结果是ColorDepth= 24 的 .tiff 文件。

有谁知道如何修复这个错误?

我将此字节转换为另一个PixelFormat

Bitmap orig = new Bitmap(new MemoryStream(bytes));
Bitmap clone = orig.Clone(new Rectangle(0, 0, orig.Width, orig.Height), PixelFormat.Format8bppIndexed);
clone.Save(@"c:\imgPixelF.tiff", ImageFormat.Tiff);

但我不确定这是一个好的决定..

4

1 回答 1

2

根据SQL Server 联机丛书,您从报告中呈现的 TIFF 图像在当前版本中将始终保存为 24 位。

For this release of SQL Server, the value of this setting is ignored, and the TIFF image is always rendered as 24-bit.

由于 ReportViewer/LocalReport 只是 SQL Server Reporting Services 的客户端使用,因此您将受到同样的限制。

尽管他们说 ColorDepth 仅支持 TIFF 图像,但有点奇怪,并且在下一句中他们说在当前版本中无论如何都会忽略该设置,并且自 SQL Server 2005 以来一直如此。

于 2012-08-06T09:49:50.907 回答