如何在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[]的形式) 的相关文章

  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 按成员序列化

    我已经实现了template
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK

随机推荐

  • 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