在SSRS报表中显示Tiff文件
时间:2020-03-06 14:39:20 来源:igfitidea点击:
我要求能够将扫描的tiff图像嵌入到某些SSRS报告中。
当我在VS2005中设计报表并添加图像控件时,但是在构建时,tiff图像会完美显示。我得到警告:
警告2 [rsInvalidMIMEType]图像image1的MIMEType属性的值是image / tiff,它不是有效的MIMEType。 c:\ SSRSStuff \ TestReport.rdl 0 0
而不是图像,我得到了红色的小x。
有人克服了这个问题吗?
解决方案
假设我们通过IIS传送图像文件,请使用ASP.NET页将图像格式和mime类型更改为可以使用的格式。
Response.ContentType = "image/png"; Response.Clear(); using (Bitmap bmp = new Bitmap(tifFilepath)) bmp.Save(Response.OutputStream, ImageFormat.Png); Response.End();
谢谢Peter,代码没有编译,但是这个想法很合理。
这是对我有用的尝试。
protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "image/jpeg"; Response.Clear(); Bitmap bmp = new Bitmap(tifFileLocation); bmp.Save(Response.OutputStream, ImageFormat.Jpeg); Response.End(); }
我一直在讨论如何在SSRS报表中显示TIFF图像的解决方案,但是我找不到任何内容,并且由于SSRS不支持TIFF,所以我认为将TIFF转换为支持的格式之一可以解决问题。它做到了。我不知道是否有类似的实现,但是我只是发布,这样其他人也可以受益。
请注意,这仅适用于数据库中保存有TIFF图像的情况。
Public Shared Function ToImage(ByVal imageBytes As Byte()) As Byte() Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(imageBytes) Dim os As System.IO.MemoryStream = New System.IO.MemoryStream() Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(ms) img.Save(os, System.Drawing.Imaging.ImageFormat.Jpeg) Return os.ToArray() End Function
以下是我们如何使用代码的方法:
1.在"报表属性"中,选择"引用",单击"添加",然后浏览System.Drawing,Version = 2.0.0.0
2.选择代码属性,复制粘贴上面的功能
3.单击确定
4.从工具箱中删除图像控件
4.1. 右键单击图像,然后选择"图像属性"
4.2. 将图像源设置为数据库
4.3. 在"使用此字段"中,单击"表达式"并粘贴下面的代码
= Code.ToImage(Fields!FormImage.Value)
4.4. 将适当的Mime设置为Jpeg
问候,
富伯特