问题标签 [wic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1606 浏览

.net - 如何使用 .NET Framework 2.0 重新分发 Windows 映像组件?

我有一个 .NET Framework 2.0 应用程序并想使用 Windows 映像组件。由于我的应用程序是一个 WinForms 应用程序,并且将通过 MSI 安装程序重新分发给用户,因此我试图找出最好的方法来做到这一点。

我看到了几个选项: 1) 跳过 .NET 2.0 并在包含 Windows 映像组件的 .NET 3.0 上构建 2) 找出一种在我的安装程序中包含 WIC 组件的方法

想法?

0 投票
2 回答
2266 浏览

graphics - WIC和GDI+是什么关系?

我对 Windows 映像组件 (WIC) 和 GDI+ 之间的关系很模糊。我过去做过一些工作,表明,例如,WIC 产生了视觉上优越的 GIF 编码,但我很惊讶我没有看到更多的人使用它来进行图像处理而不是 GDI+。我知道它没有 GDI+ 的绘制操作,但对于编码/解码来说,它似乎更胜一筹。那么为什么我们看不到迁移呢?

0 投票
2 回答
4307 浏览

wpf - Windows 7:另存为 TIFF CCITT Group4 已更改?

我的将多页 TIFF 转换为 PDF 的程序不再在 Windows 7 下运行。该程序包含遍历 TIFF 页面的代码,将每个页面转换为具有 CCITT Group4 压缩的 TIFF 并将位图数据插入生成的 PDF文件。

转换通过以下方式完成(c#):

似乎 GDI+ 的行为在 Windows 7 中发生了变化:生成的 CCITT 位图数据不再编码在单个条带中。因此,我无法在我的 PDF 文件中使用此位图数据。

问题:有人知道我如何告诉 GDI+ 将位图数据编码在一个条带中吗?

0 投票
2 回答
806 浏览

.net - .NET Framework 和 Gif 透明度

在 Windows 7(和新的图像编解码器:WIC)之前,我使用以下(非常快速但肮脏)的方法来创建一个 Gif 编码图像,其中白色作为透明色:

这种方法之所以有效,是因为 .NET 过去使用标准调色板对 Gif 进行编码,其中索引 255 是白色。

然而,在 Windows 7 中,这种方法不再有效。似乎标准调色板已更改,现在索引 251 是白色。但是我不确定。也许新的 Gif 编码器会根据使用的颜色动态生成调色板?

我的问题:是否有人对 Windows 7 的新 Gif 编码器有深入了解,以及什么是使白色透明的好且快速的方法?

0 投票
1 回答
402 浏览

wpf - Windows XP 无法识别图像元数据关键字

我在我的 WPF 应用程序中使用 WIC(Windows 图像处理组件)来读取/写入图像元数据。除了“摘要属性”选项卡中的 Windows XP 无法识别关键字之外,一切都运行良好。

Vista & 7 在标签属性中正确识别它。

我将不胜感激任何指针..

穆鲁格什。

0 投票
2 回答
5915 浏览

c# - 在 WPF 中使用带有大图像的图像源

我正在开发一个允许用户使用 ItemsControl 操作多个图像的应用程序。我开始运行一些测试,发现该应用程序在显示一些大图像时出现问题 - 即。它不适用于来自 http://earthobservatory.nasa.gov/Features/BlueMarble/BlueMarble_monthlies.php的高分辨率 (21600x10800)、20MB 图像,尽管它显示来自http:// zebu 的 6200x6200、60MB 哈勃望远镜图像。 uoregon.edu/hudf/hudf.jpg就好了。

最初的解决方案只是指定了一个带有 Source 属性的 Image 控件,该属性指向磁盘上的一个文件(通过绑定)。使用 Blue Marble 文件 - 图像不会显示。现在这可能只是一个隐藏在时髦的 MVVM + XAML 实现中某个深处的错误——Snoop 显示的可视化树如下所示:

Window/Border/AdornerDecorator/ContentPresenter/Grid/Canvas/UserControl/Border/ContentPresenter/Grid/Grid/Grid/Grid/Border/Grid/ContentPresenter/UserControl/UserControl/Border/ContentPresenter/Grid/Grid/Grid/Grid/Viewbox/ ContainerVisual/UserControl/Border/ContentPresenter/Grid/Grid/ItemsControl/Border/ItemsPresenter/Canvas/ContentPresenter/Grid/Grid/ContentPresenter/Image...

现在调试这个!WPF可以像那样疯狂......

无论如何,事实证明,如果我创建一个简单的 WPF 应用程序 - 图像加载就好了。我试图找出根本原因,但我不想花几周的时间。我认为正确的做法可能是使用转换器来缩小图像 - 这就是我所做的:

现在这工作正常,除了一个“小”问题。当您仅在 Image.Source 中指定文件路径时 - 应用程序实际上使用的内存更少,并且比使用 BitmapImage.DecodePixelWidth 时运行得更快。如果您有多个指向同一图像的 Image 控件,再加上 Image.Source - 它们只使用与仅加载一个图像一样多的内存。使用 BitmapImage.DecodePixelWidth 解决方案 - 每个额外的 Image 控件都使用更多内存,并且每个控件都比仅指定 Image.Source 时使用更多。也许 WPF 以某种方式以压缩形式缓存这些图像,而如果您指定解码的尺寸 - 感觉就像您在内存中获得了未压缩的图像,加上它需要 6 倍的时间(也许没有它,缩放是在 GPU 上完成的?),

如果我只是缩小图像,将其保存到一个临时文件,然后使用 Image.Source 指向该文件 - 它可能会工作,但它会很慢,并且需要处理临时文件的清理。如果我可以检测到未正确加载的图像 - 也许我只能在需要时缩小它,但 Image.ImageFailed 永远不会被触发。也许它与视频内存有关,而这个应用程序只是将更多的内存与深度视觉树、不透明蒙版等一起使用。

实际问题:我如何才能像 Image.Source 选项一样快速加载大图像,如果我只需要低于原始分辨率的特定分辨率,则无需使用更多内存用于额外的副本和用于缩小图像的额外内存?此外,如果没有图像控件不再使用它们,我不想将它们保留在内存中。

0 投票
2 回答
2991 浏览

c++ - Windows 编程:ID2D1Bitmap 接口 - 获取位图数据

我一直在编写自己的函数库来访问一些新的 Direct2D Windows 库。特别是,我一直在研究 ID2D1Bitmap 接口。我想编写一个函数来返回指向位图数据开头的指针(用于编辑特定像素,或自定义编码或我将来可能希望的任何其他内容)。不幸的是......前面的问题......

我似乎找不到从 ID2D1Bitmap 接口访问原始像素数据的方法。

有谁知道如何访问它?我的一位朋友建议将位图绘制到表面并从那里提取位图数据。我不知道这是否可行。它肯定看起来效率低下,我不知道要使用哪种表面。

任何帮助表示赞赏。(尤其是 c++,但我认为代码在语言之间不会有太大差异)

(我知道我可以直接从文件中读取数据,但我使用的是 WIC 解码器,这意味着它可以是任意数量的无法辨认的格式)

0 投票
1 回答
371 浏览

c# - 如何迭代 WIC 中图像标题命名空间内的所有查询路径?

我正在使用 Windows Imaging Component 在我的 WPF 应用程序中读取/写入图像元数据。我想知道是否有一种有效的方法可以知道名称空间中是否存在任何路径。例如,我想知道 IPTC 命名空间中是否存在任何路径,如果不存在,我想从图像标题中删除命名空间。

任何指针将不胜感激。

谢谢,

穆鲁格什。

0 投票
1 回答
1969 浏览

delphi - 如何读取 WIC 图像中的像素

下面的代码(来自此线程:如何在佳能文件上使用 Delphi 2010 的新 WIC 功能?)将 WIC 图像打开到位图中。

但是,如果 WIC 像素值的动态范围很大,则此代码会丢失很多信息,因为它必须将宽动态范围缩放到位图像素可以容纳的低范围。

谁能给我看示例代码,让我直接从 TWICImage 读取像素值,这样我就可以访问图像数据而不会丢失信息?我需要每个像素的强度(灰度)值,如果不能直接使用,也许可以从 RGB 值计算?

就像是:

0 投票
1 回答
1778 浏览

visual-c++ - JPEG 提取 DCT 表

我正在使用 VS2008、MFC 和 WIC 开发图像查看器/编辑器,我想在图像处理后尽可能地将 jpeg 重新压缩(质量压缩)到其原始图像。有谁知道如何提取亮度和色度表以在
http://msdn.microsoft.com/en-us/library/gg430026%28v=vs.85%29.aspx中设置而 无需使用额外的大型库(如libjpeg)?