问题标签 [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.
c++ - 将 WICBitmap 绘制到窗口?
我的 MFC 程序中有一个WICBitmap
包含图像的图像。有没有办法将此位图绘制到设备上下文上?
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 实例在示例应用程序中创建,如下所示:
我可能做错了什么?
visual-c++ - 在没有完整路径的情况下加载文件 Visual Studios 2012
我正在Visual Studio 2012中编写程序。我正在使用 Windows Imaging 组件,我想放置图像文件供我的程序使用,而不是资源。当有人下载它时,我想让它们与该程序一起下载。
所以我的问题是如果我在程序中指定直接路径说:
我将如何做到这一点而无需指定Users\Billy\Documents
. 因为它在其他计算机上会有所不同。
visual-c++ - 使用 LoadImage 获取资源 win32
我有一个程序,我使用 OpenFileName 和 GetOpenFileName 获取文件并使用 Windows Imaging Component 将其转换为 DIBSection,然后使用 BitBlt 将其绘制到窗口。
我想对我的资源文件做同样的事情,所以我使用 LoadImage,但是当我尝试使用 Windows Imaging Component 转换它时,我遇到了访问冲突,它说读取字符串字符时出错。
这就是我使用 LoadImage 的方式
我的问题是什么?
bitmap - 如何解释 HRESULT -2003292276?
我该如何解释HRESULT -2003292276
?
这是通过调用返回的IWICFactory factory->CreateBitmapFromMemory()
:
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?
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 测试):
编辑 2
好的,现在看来我有一些工作,而一些没有。一些报告自己为 24bpp BGR 工作,而另一些看起来像上图,如果我计算它给我的步幅与它应该是什么相比,它们是不同的,缓冲区的大小也不同。我也有一些 32bpp BGR 图像,其中一些有效,而另一些则无效。我在这里错过了什么吗?什么可以弥补缓冲区中的额外字节?
这是一个示例图像:
24bppBGR JPEG:
如果我计算这个:
如果我对迄今为止有效的图像进行这些计算,我发现计算和代码给我的值没有区别......
我是否理解这里发生的错误?这些计算现在应该像我想的那样工作吗?
再次感谢
c++ - 是什么导致 IWICBitmapFrameEncode::SetPixelFormat 返回与请求格式不同的格式?
我一直在使用 WIC 将多个图像编码为 JPEGXR 格式。有时,我的程序会在我的 Encode 函数的以下片段中记录最后一个 LogAssert 的错误。
我检查了转储文件,似乎返回的 formatGUID 是 GUID_WICPixelFormat24bpp RGB。
我有以下问题:
SetPixel 格式何时返回不同的版本?可能导致它返回不同 GUID 的因素是什么?
我总是编码为 JPEGXR,并且总是应用相同的属性。为什么 SetPixelFormat 的行为是不确定的?它不应该总是成功,还是总是返回 GUID_WICPixelFormat24bppRGB?
如果支持 RGB 格式,为什么不支持 BGR?这只是顺序的改变。
我的代码是在此处示例的帮助下编写的:
http://msdn.microsoft.com/en-us/library/windows/desktop/ee719871(v=vs.85).aspx
c++11 - 为什么 CreateBitmapFromDxgiSurface 创建的位图与我的绘制操作不匹配?
众所周知,我们可以使用 WriteFrame 将位图保存到 wic 中的文件。
这里在方法WriteFrame中,我们可以看到一个参数 ID2D1Bitmap 对象。当我使用
然后将 myBitmap 传递给 WriteFrame,我无法获取位图,它向我显示黑色图像。但是当我使用
并将 m_Bitmap 传递给 WriteFrame,我可以在图像文件中获得正确的位图。为什么会这样?
任何人都可以帮忙。谢谢你。
c# - 调整图像大小 - WIC 与 GDI
编辑:从那以后,我发现这些实现都不适用于服务器端场景:微软不支持它们。所以不要去使用它们!
所以我在下面提供了两个单独的实现。我想我已经完成了 Windows 映像组件 (WIC) 的实现。
一些评论:
- GDI 实现似乎比 WIC 更快 - WIC @ 0.26s/photo, GDI @ 0.14s/photo)
- WIC 实现在多线程时没有看到任何性能提升,GDI 下降到 ~0.10s/照片
- 服务器端处理只支持 WIC,但是如果它不是多线程的,那么它就不能很好地扩展
- 在 i7 上运行,有问题的照片是由奥林巴斯相机创建的典型 1.2MB 图像
- 我的灵感来自http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx
任何人都可以看到任何明显的东西吗?