如何在Silverlight Image控件上显示TIFF(以Byte[]的形式)

2023-12-25

我创建了一个窗口服务,将所有 TIFF 文件放入数据库并将它们存储为Byte[].

现在我希望能够通过Silverlight Image控件来显示它们

所以我在绑定 XAML 期间使用转换器来转换Byte[] to Bitmap因为Image.Source只接受他们的 URI(我没有将文件存储在服务器上,所以不能使用此方法)或Bitmap.

BitmapImage bmi = new BitmapImage();
if (value != null)
{
    ImageGallery imageGallery = value as ImageGallery;
    byte[] imageContent = imageGallery.ImageContent;
    string imageType = imageGallery.ImageType;
    using (MemoryStream ms = new MemoryStream(imageContent))
    {
        bmi.SetSource(ms);
    }
}
return bmi;

但是,我得到了例外bmi.SetSource(ms)因为Silverlight只支持JPEG和PNG图像。

所以我做了更多的研究,知道我应该将 TIFF 的字节转换为 JPEG 或 PNG 的字节,然后它就可以工作了。

为此,我尝试了两种方法:

  • 在服务器上进行转换:在我的 RIA 服务调用中,检索后ImageGallery,我循环遍历可用图像,将 TIFF 字节转换为 JPEG 字节。

但这不起作用...... 你能告诉我我哪里做错了吗?

public IQueryable<ImageGallery> GetImageGalleries()
{
    var imageGalleries = this.ObjectContext.ImageGalleries.OrderBy(i=>i.ImageName);
    foreach (ImageGallery imageGallery in imageGalleries)
    {
        if (imageGallery.ImageType == ".tif" || imageGallery.ImageType == ".tiff")
        {
            //Convert the Tiff byte array format into JPEG stream format
            System.Drawing.Bitmap dImg = new System.Drawing.Bitmap(new MemoryStream(imageGallery.ImageContent));
            MemoryStream ms = new MemoryStream();
            dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            //then convert the JPEG stream format into JPEG byte array format
            byte[] buf = new byte[ms.Length];  
            ms.Read(buf, 0, buf.Length);

            //Changing the format tiff byte[] of ImageGallery to jpeg byte[] 
            imageGallery.ImageContent = buf;
        }
    }
    return imageGalleries;
}
  • 另一种解决方案是使用LibTiff.Net http://bitmiracle.com/libtiff/库直接转换Byte[]的 TIFF 至WritableBitmap直接在 Silverlight 上。

然而,在深入研究他们的示例应用程序或使用 Reflector 查看源代码函数后,我仍然不知道如何使用他们的库将 TIFF 的字节转换为WritableBitmapJPEG(或 PNG),因为他们的示例仅显示使用在文件目录中搜索 TIFF 的 API。就我而言,服务器上没有现有文件。

有人可以帮我如何在 Silverlight 的图像控件上显示 TIFF 文件吗?

我搜索了论坛,但没有找到任何可靠的答案。

谢谢


我认为 LibTiff 将是最佳选择。最终Tiff.ClientData接受一个Stream这就是 tiff 数据。如果您的 tiff 数据确实是byte[]那么你只需要一个MemoryStream周围。更有可能在某个时刻byte[]是从流中拉出来的,所以你可能甚至不需要这个中介byte[] / MemoryStream.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Silverlight Image控件上显示TIFF(以Byte[]的形式) 的相关文章

  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 如何在标准 WPF ListView 中启用 UI 虚拟化

    我正在使用 NET 4 5 VS2012 并且我有一个 ListView 看起来像这样
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹
  • Global.asax PostAuthenticateRequest 事件绑定是如何发生的?

    我怎样才能使用发布验证请求Global asax 事件 我正在跟进本教程 http www asp net security tutorials forms authentication configuration and advanced
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • IdentityServer4中的签名凭证是什么?

    我们正在使用 NET Core Web 应用程序实现 Identity Server 4 我浏览了身份服务器文档 配置身份服务器 使用 DI 时有以下行 AddTemporarySigningCredential 我试图理解这个签名凭证是什
  • 循环内的堆栈分配

    在 C 语言中 当你编写这样的代码时 void some function void while something char buf 4096 是否分配buf调用函数时会发生什么 或者循环的每次迭代都会发生单独的分配 如果我声明以下内容
  • 如何在 Android 中暂停录音?

    我的目标是暂停录制文件 我在 Android 开发者网站上看到它 但 Media Recorder 没有暂停选项 Java 支持以编程方式合并两个音频文件 但在 android 中它不起作用 从 Java 加入两个 WAV 文件 https
  • MapQuest API 密钥不再有效

    我们已经使用 MapQuest API 密钥几年了 但在过去 24 小时左右的某个时刻 地图已停止工作 我们收到错误 此密钥未获得此服务的授权 我登录后发现我们的旧密钥已被删除 并自动为新的 Open Maps API 生成了一个新密钥 我
  • Spark sql中如何使用outer apply

    我是 Spark sql 的新手 我正在将现有的 sql 查询转换为 Spark sql 我现有的 sql 查询包含需要在 Spark sql 中工作的外部应用函数 Spark sql 中的外部应用的替代方案是什么 非常感谢任何帮助 提前致
  • 为什么 0.1 + 0.2 在 JavaScript 中返回不可预测的浮点结果,而 0.2 + 0.3 则不会?

    0 1 0 2 gt 0 30000000000000004 0 2 0 2 gt 0 4 0 3 0 2 gt 0 5 我知道这与浮点有关 但这里到底发生了什么 根据 Eric Postpischil 的评论 这不是重复的 那只涉及为什么
  • 无法通过本地 IIS 进行 Windows 身份验证

    因此 我使用 Intranet 模板创建了一个新的 ASP NET MVC 项目 web config 包含适当的值 例如
  • Service Fabric 资源平衡器使用陈旧的报告负载

    在研究 Service Fabric 上的资源平衡器和动态负载指标时 我们遇到了一些问题 运行 devbox SDK GA 2 0 135 在 Service Fabric Explorer 门户和独立应用程序 中 我们可以看到平衡运行非常
  • 从 Android JNI 程序调用的 Log API 是什么?

    我想通过将日志消息插入到 logcat 来调试 JNI C 应用程序 执行此操作的 C API 是什么 像这样 include
  • 无法在 Android 中配置 Fiddler 代理来解密 HTTPS

    我正在尝试设置 Fiddler 代理来捕获来自 Xamarin 应用程序的流量 我已完成以下步骤 在Windows机器上安装了Fiddler v5 0 20173 50948 Set 允许远程计算机连接和港口8888 Set 捕获 HTTP
  • javascript - Express.js 中的 app.set('port', 8080) 与 app.listen(8080)

    我一直在尝试使用 Express js 来启动一个网站 起初 我使用的是app set port 8080 但浏览器无法连接到该页面 后来我把代码改成了app listen 8080 并且网页正常显示 这让我想知道 这两个函数有什么区别 a
  • R Shiny - 使用 updateSelectizeInput 优化页面加载时间

    我们的闪亮页面有多个selectizeInput控件 其中一些在下拉框中有很长的列表 因此 初始加载时间很长 因为需要预先填充所有下拉框selectizeInput控制 编辑 请参阅下面的示例 显示加载长列表如何影响页面加载时间 请复制以下
  • 图中的颜色点根据值向量的不同而不同

    我正在使用 R 绘制下图plot 功能 这是一个向量图shiftTime的时间转变 我有另一个向量intensity强度值范围从 3到 9 我想根据具有颜色渐变的这些值对图中的点进行着色 在示例中 我可以在实际绘制点的值上找到颜色 因此在本
  • 如何让 Knockout.js 设置属性的命名空间 URI?

    在 svg 中 如果我使用淘汰赛来设置xlink href属性为a节点 属性的命名空间设置不正确 因此a单击时不能用作链接 例如 请考虑以下包含两个链接的椭圆的 svg 有其一xlink href属性是硬编码的 另一个是通过淘汰赛设置的da
  • 在discord.py中我该如何制作才能使机器人仅在一台服务器上工作

    在discord py 中 我该如何让机器人只在一个上运行 有没有办法做到这一点 x channel id if x 12454431344645423 this is the channel id print hi 最简单的方法是不将其添
  • 如何确定 cv::Mat 是否为零矩阵?

    我有一个根据以下代码动态更改的矩阵 for It all frames begin It all frames end It ItTemp It subtract ItTemp Base NewData cout lt lt The siz
  • Android ArrayAdapter 和 JSONArray

    我是 Android 开发新手 考虑到 JSON Carrier 相对于 XML 的轻便性 我纯粹喜欢在我的简单应用程序中使用 JSON 对象和数组 我在使用 ArrayAdapter 填充 ListView 时遇到了挑战 这就是我克服的方
  • 对于 Scala 来说,类型擦除有什么优点吗?

    我听说过很多关于不同 JVM 语言的信息 这些语言仍处于蒸气软件模式 建议以某种方式实现具体化 我有一个半记得的 或者完全想象的 不知道是哪一个 的想法 我在某处读到 Scala 以某种方式利用 JVM 的类型擦除来完成具体化无法完成的事情
  • Android Wear 5.1 手腕手势 API?

    适用于可穿戴设备的 Android 5 1 1 引入了通过旋转 轻拂手腕来关闭通知的功能 这个API是否暴露给开发者使用 我无法找到任何相关信息 并且他们的可穿戴设备开发人员网站似乎没有更新 不 目前没有适用于 Wear 1 0 设备的手腕
  • 如何在Silverlight Image控件上显示TIFF(以Byte[]的形式)

    我创建了一个窗口服务 将所有 TIFF 文件放入数据库并将它们存储为Byte 现在我希望能够通过Silverlight Image控件来显示它们 所以我在绑定 XAML 期间使用转换器来转换Byte to Bitmap因为Image Sou