问题标签 [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 回答
1012 浏览

c++ - 将 WICBitmap 绘制到窗口?

我的 MFC 程序中有一个WICBitmap包含图像的图像。有没有办法将此位图绘制到设备上下文上?

0 投票
1 回答
2123 浏览

visual-studio - 为什么在我的 32 位应用程序中使用 WIC 在 Windows 7 32 位中失败?

我有在 Visual Studio Pro 2012 Update 2 中使用Windows 图像组件的 Win32 C++ 示例应用程序。我为 X86 构建了这个应用程序,并在 Windows 7 X64 SP1 和 Windows 7 X86 SP1 中进行了测试。它适用于第一个,而后者则因“未注册类”而失败。

如果我用 VS2008 构建相同的代码,它工作正常。

WIC 实例在示例应用程序中创建,如下所示:

我可能做错了什么?

0 投票
1 回答
57 浏览

visual-c++ - 在没有完整路径的情况下加载文件 Visual Studios 2012

我正在Visual Studio 2012中编写程序。我正在使用 Windows Imaging 组件,我想放置图像文件供我的程序使用,而不是资源。当有人下载​​它时,我想让它们与该程序一起下载。

所以我的问题是如果我在程序中指定直接路径说:

我将如何做到这一点而无需指定Users\Billy\Documents. 因为它在其他计算机上会有所不同。

0 投票
1 回答
3898 浏览

visual-c++ - 使用 LoadImage 获取资源 win32

我有一个程序,我使用 OpenFileName 和 GetOpenFileName 获取文件并使用 Windows Imaging Component 将其转换为 DIBSection,然后使用 BitBlt 将其绘制到窗口。

我想对我的资源文件做同样的事情,所以我使用 LoadImage,但是当我尝试使用 Windows Imaging Component 转换它时,我遇到了访问冲突,它说读取字符串字符时出错。

这就是我使用 LoadImage 的方式

我的问题是什么?

0 投票
3 回答
459 浏览

bitmap - 如何解释 HRESULT -2003292276?

我该如何解释HRESULT -2003292276

这是通过调用返回的IWICFactory factory->CreateBitmapFromMemory()

0 投票
2 回答
2702 浏览

c++ - How to covert IWICBitmapSource to HBITMAP?

It's easy to produce IWICBitmap from HBITMAP with CreateBitmapFromHBITMAP factory method. But how to get simple GDI bitmap from IWICBitmapSource?

0 投票
1 回答
1437 浏览

c++ - 从 WIC 图像 c++ 获取 RGB

我正在使用 WIC 加载图像,然后我希望能够获取每个像素的 RGB 值。我已经使用getDataPointer()来创建一个字节缓冲区(我将其转换为一个COLORREF数组),但是在这之后事情变得奇怪了。

我有一个正在测试的 10x10 24 位 png。如果我查看getDataPointer()给我的大小值,它说它是 300,这是有道理的,因为 10 * 10 * 3(每像素 3 个字节)= 300。如果我执行getStride(),它会给我 30,这也使得感觉。

所以我创建了一个循环来使用迭代器遍历COLORREF,条件是i < size/3,因为我知道数组中只有 100 个像素。然后我使用宏GetRValue()GetGValue()GetBValue()来获取 rgb 值。

这是事情变得奇怪的时候 - 我的小图像只是一个带有纯红色、绿色、蓝色和黑色像素的测试图像,但我的 RGB 值出现 (255, 0, 0), (0, 255, 0), ( 27, 255, 36), (0, 0, 0) 等。似乎有些值不能正确输出并且以某种方式损坏。此外,图像的最后 20/30 像素要么是大量疯狂的颜色,要么是全黑,让我觉得有某种损坏。

我还用更大的实际照片对其进行了测试,结果显示为全灰度并重复相同的模式,这让我认为这是一个步幅问题,但我不明白这是怎么回事,因为当我调用getPixelFormat()时, WIC 说它是 24bppBGR 或 24bppRGB,具体取决于图像。

有谁知道我做错了什么?我不应该使用 COLORREF 和宏或类似的东西吗?

谢谢你的时间。

编辑

嗯,我这里还是有问题。我尝试使用 PixelFormat() 报告为 24bppBGR 的另一个 24 位 PNG,但似乎步幅已关闭或其他原因,因为它绘制为倾斜(强制性的 nyan cat 测试):

使用 nyan cat 测试 WIC 负载,但步幅已关闭

编辑 2

好的,现在看来我有一些工作,而一些没有。一些报告自己为 24bpp BGR 工作,而另一些看起来像上图,如果我计算它给我的步幅与它应该是什么相比,它们是不同的,缓冲区的大小也不同。我也有一些 32bpp BGR 图像,其中一些有效,而另一些则无效。我在这里错过了什么吗?什么可以弥补缓冲区中的额外字节?

这是一个示例图像:

24bppBGR JPEG:

如果我计算这个:

如果我对迄今为止有效的图像进行这些计算,我发现计算和代码给我的值没有区别......

我是否理解这里发生的错误?这些计算现在应该像我想的那样工作吗?

再次感谢

0 投票
1 回答
397 浏览

c++ - 是什么导致 IWICBitmapFrameEncode::SetPixelFormat 返回与请求格式不同的格式?

我一直在使用 WIC 将多个图像编码为 JPEGXR 格式。有时,我的程序会在我的 Encode 函数的以下片段中记录最后一个 LogAssert 的错误。

我检查了转储文件,似乎返回的 formatGUID 是 GUID_WICPixelFormat24bpp RGB

我有以下问题:

  1. SetPixel 格式何时返回不同的版本?可能导致它返回不同 GUID 的因素是什么?

  2. 我总是编码为 JPEGXR,并且总是应用相同的属性。为什么 SetPixelFormat 的行为是不确定的?它不应该总是成功,还是总是返回 GUID_WICPixelFormat24bppRGB?

  3. 如果支持 RGB 格式,为什么不支持 BGR?这只是顺序的改变。

我的代码是在此处示例的帮助下编写的:

http://msdn.microsoft.com/en-us/library/windows/desktop/ee719871(v=vs.85).aspx

0 投票
0 回答
790 浏览

c++11 - 为什么 CreateBitmapFromDxgiSurface 创建的位图与我的绘制操作不匹配?

众所周知,我们可以使用 WriteFrame 将位图保存到 wic 中的文件。

这里在方法WriteFrame中,我们可以看到一个参数 ID2D1Bitmap 对象。当我使用

然后将 myBitmap 传递给 WriteFrame,我无法获取位图,它向我显示黑色图像。但是当我使用

并将 m_Bitmap 传递给 WriteFrame,我可以在图像文件中获得正确的位图。为什么会这样?

任何人都可以帮忙。谢谢你。

0 投票
1 回答
2911 浏览

c# - 调整图像大小 - WIC 与 GDI

编辑:从那以后,我发现这些实现都不适用于服务器端场景:微软不支持它们。所以不要去使用它们!

所以我在下面提供了两个单独的实现。我想我已经完成了 Windows 映像组件 (WIC) 的实现。

一些评论:

任何人都可以看到任何明显的东西吗?