问题标签 [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 投票
1 回答
1786 浏览

render - 为 IWicBitmap 创建 wic 位图渲染目标

我使用内存中存在的数据创建了一个 IWicBitmap

现在我想在位图上绘图,所以我创建了 bitmaprendertarget

但它没有形成目标 - 它返回一个错误:

我不明白如何解决它我也设置了属性

0 投票
1 回答
1214 浏览

c++ - 使用 Windows 成像组件将 EMF 转换为 BMP(元文件到位图)

我有一个 .emf 文件,我想将其转换为旧版 VC++ 6.0 代码中的位图。

我一直在查看 WIC 文档,但我很惊讶我还没有看到这样做的方法。

我错过了什么吗?

如果 WIC 最终不支持这一点,是否有一种方法以编程方式将 .emf 文件加载到 CBitmap 对象中?

0 投票
1 回答
1907 浏览

windows - ID2D1Bitmap 和 IWicBitmap 之间的区别

ID2D1Bitmap 和 IWicBitmap 之间有什么区别我有原始内存数据,我想创建一个位图

0 投票
1 回答
2110 浏览

windows - WIC 位图处理最有效的像素格式是什么?

我正在尝试使用 Direct2D 和 WIC 位图制作一个简单的视频播放器,例如程序。
它需要对 YUV 像素格式帧数据进行快速且 CPU 经济的绘图(带拉伸)。

我已经用 GDI 进行了测试。我希望切换到 Direct2D 可以带来至少 10 倍的性能提升(更小的 CPU 开销)。

我要做的基本上如下:

  1. 创建一个空的 WIC 位图 A(用于绘图画布)
  2. 用 YUV 帧数据创建另一个 WIC 位图 B(格式转换)
  3. 将位图 B 绘制到 A 上,然后将 A 绘制到 D2D 渲染目标

对于 1、2 步,我必须选择像素格式。
WIC 原生像素格式

有一个 MSDN 页面推荐WICPixelFormat32bppPBGRA
http://msdn.microsoft.com/en-us/library/windows/desktop/hh780393(v=vs.85).aspx

WICPixelFormat32bppPBGRA和有什么区别WICPixelFormat32bppBGRA?(前者有附加P)

如果WICPixelFormat32bppPBGRA是要走的路,总是这样吗?无论硬件和/或配置?

实际上,WIC 位图处理最有效的像素格式是什么?

0 投票
1 回答
2036 浏览

windows - Windows StretchBlt API 性能

我计时了一个使用多个StretchBltStretchDIBits调用的 DDB 绘图操作。

我发现,完成时间与目标窗口大小成比例增加/减少。
使用 900x600 的窗口大约需要 5 毫秒,但使用 1920x1080 则需要 55 毫秒(源图像为 1280x640)。

似乎 Stretch.. API 不使用任何硬件加速功能。

源图像(实际上这是临时绘图画布)是使用创建的,CreateDIBSection因为我需要为绘制的每一帧生成(拉伸和合并)位图像素数据

让我们假设,Windows GDI 是没有希望的。那么有希望的替代方案是什么?

我考虑了使用 WIC 方法的 D3D、D2D(写入 WIC 位图并使用 D2D 绘制它,然后从 WIC 位图中读回像素数据)。
我打算用 WIC 方法尝试 D2D,因为我很快就会需要使用广泛的文本绘图功能。

但似乎 WIC 并没有那么有前途:WIC 位图处理最有效的像素格式是什么?

0 投票
0 回答
919 浏览

wic - 如何在 Windows Server 2008 R2 Enterprise SP1 上安装 WIC?

我在 Windows Server 2008 R2 Enterprise SP1 上运行,但是无法安装 Windows 映像组件。

它说:Setup could not find the update.inf file needed to update your system.

我在互联网上尝试了所有可能的方法,但它不起作用。请帮助我,因为我至少在过去 4-5 小时内试图找到解决方案:/

谢谢!

0 投票
1 回答
371 浏览

windows - WIC“复制像素”调用后预乘像素

我一直在研究创建 PARGB32 位图。这似乎是生成完全适用于 XP 后菜单项的图像所必需的。

这个示例 http://msdn.microsoft.com/en-us/library/bb757020.aspx?s=6 非常有趣但相当复杂,因为我以前很少使用 OLE 接口。但是,在仔细研究了使用 WIC 和 OLE 的代码之后,我想我理解它是如何工作的。让我感到困惑的一件事是用户“David Hellerman”的评论。总而言之,他指出此示例功能不完整。它不考虑源图标中的任何潜在 alpha 信息 - 如果存在 alpha 数据,则必须在扫描 ppvBuffer 变量时逐个像素地对其进行预乘。

我的问题有两个部分。如何在使用 WIC 而不是 GDI 时检测图标中是否存在 alpha 数据,如果确实存在,如何将其预乘到像素中?

0 投票
2 回答
591 浏览

c++ - 将 IWICBtmap 写入文件 - 分辨率不正确

我有以下代码,我在其中读取图像(用于测试的 JPG),指定剪切矩形区域并将“剪切”区域写入文件。

我的测试图像是 320 x 240 像素 @ 300dpi。当我在所有迹象中阅读它时都说它是那个大小但是当我把它写出来时结果图像是 102 x 76 并且查看文件属性我看不到 H/V 分辨率。

现在 320/102 = 3.1372 和 300/96 = 3.125 那么屏幕分辨率与图像有什么关系吗?

写出 IWICBitmap 的整个主题从一开始就是一场拳击比赛。为什么这么难?

谢谢一堆

更多信息

imageRect 是正确的 LTRB = 0,0,320,240

但复制后 wD = 102 和 hD = 76

为什么?

这是更多信息

bitmapPixelSize 是正确的 320 x 240,resX 和 Y 是 300

wD = 102 和 hd = 76 - 为什么?

最新代码

0 投票
1 回答
344 浏览

windows - IWICBitmapScaler 不适用于 96bppRGBFloat 格式?

我在使用 WIC 库时遇到了问题。而且我发现我无法使用 IWICBitmapScaler 缩放 R32G32B32 图像......代码示例如下所示:

我只是在 dstImg 缓冲区中得到 -1.#QNAN000 :( 我不确定我是否做错了什么,或者 IWICBitmapScaler 只是不支持这种格式?

另一个问题是,当我使用 IWICFormatConverter 将 R32G32B32A32(即 128bppRGBFloat)图像转换为 R32Gray(即 32bppGrayFloat)格式时,它总是将值钳制为 [0, 1],这是理想的行为吗?(为什么???)

(我的平台:Win 8.1 64bit + VS2013)

0 投票
0 回答
269 浏览

c++ - IWICBitmapLock::GetStride 方法总是返回相同的值

我有这段代码,它在运行时执行了几次:

uiWidth并且uiHeight总是不同,初始值是 3264 和 2448。第二次可能是 778 和 246。但是方法pLock->GetStride(&cbStride)总是返回相同的步幅值(在我的例子中是 13056)。它会导致该CreateBitmapFromMemory()方法创建损坏的位图。其他变量会根据位图尺寸正确变化。它看起来像是pLock某处缓存的步幅值。

MSDN 中写道,步幅值特定于 IWICBitmapLock,而不是位图。但是,我确实每次都释放 pLock。那么这种行为的原因可能是什么?

我可以用来做同样事情的第二种方法是这样的,但我想了解上面的代码有什么问题。