【问题标题】:Displaying Tiff files in SSRS reports在 SSRS 报告中显示 Tiff 文件
【发布时间】:2012-08-28 20:53:34
【问题描述】:

我需要能够将扫描的 tiff 图像嵌入到一些 SSRS 报告中。

当我在 VS2005 中设计报告并添加图像控件时,tiff 图像显示完美,但是当我构建它时。我收到警告:

Warning 2 [rsInvalidMIMEType] The value of the MIMEType property for the image ‘image1’ is “image/tiff”, which is not a valid MIMEType. c:\SSRSStuff\TestReport.rdl 0 0

我得到的不是图像,而是红色的小 x。

有人解决过这个问题吗?

【问题讨论】:

    标签: sql-server-2005 reporting-services tiff


    【解决方案1】:

    假设您通过 IIS 传递图像文件,请使用 ASP.NET 页面将图像格式和 mime 类型更改为您可以使用的内容。

    Response.ContentType = "image/png";
    Response.Clear();
    using (Bitmap bmp = new Bitmap(tifFilepath))
      bmp.Save(Response.OutputStream, ImageFormat.Png);
    Response.End();
    

    【讨论】:

    • 不适合我。虽然stackoverflow.com/questions/126584/…S 确实如此
    • 这只是一个草图,不是从真实代码中截取的。除非您正在处理照片图像,否则我是否可以建议您使用 PNG 而不是 JPEG? Tiff 是一种无损格式;这就是我选择另一种无损格式的原因。
    • 在产生这个想法的代码中,我用较小的航拍照片拼贴组成了指定尺寸的拼贴。然后我在其上绘制注释并交付完成的图像。代码太复杂,无法清楚说明原理。
    • 我在使用 png 时遇到了一些奇怪的 gdi 错误。 Jpeg 将适合这项任务。
    • 哦,是的,我忘记了。这是转换为量化调色板的错误,它没有正确初始化。我记得你可以通过转换为 BMP 然后转换为 PNG 来避免这个问题。
    【解决方案2】:

    我一直在寻找有关如何在 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.在Report Properties中,选择Refereneces,点击add,浏览System.Drawing,Version=2.0.0.0 2.选择代码属性,复制粘贴上面的功能 3.点击确定 4. 从工具箱中拖放一个 Image 控件 4.1。右键单击图像并选择图像属性 4.2.将图像源设置为数据库 4.3.在使用此字段中,单击表达式并粘贴下面的代码 =Code.ToImage(Fields!FormImage.Value)
    4.4.将适当的 Mime 设置为 Jpeg

    问候, 富尔伯特

    【讨论】:

    • 我知道这已经过时了,但我的公司仍在使用 SSRS 2005 报告,并且以前的开发人员在 SQL Server 中创建了对 .Net 框架的依赖项,以将我们的 TIFF 图像转换为位图以显示在报告上.随着我们推出新版本的 SQL Server,我们一直在努力寻找一种方法来消除这种依赖关系。富尔伯特的回答完美解决了问题!!非常感谢你分享这个!
    【解决方案3】:

    感谢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();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多