问题标签 [dib]
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.
javascript - JavaScript、输入流和 DIB?
是否有任何有用的方法可以将 DIB 加载到输入流中并获取它的句柄以及 JavaScript (js) 中的所有内容?
.net - 如何使用该 COM 对象将 C++/COM 库中实现的 DIB 放入 .NET 客户端
我们有一个用 C++/ATL 实现的 COM 对象,其中包括一个返回 DIB 的方法。我们还在编写一个将使用该 COM 对象的 .NET 应用程序。由于我们同时编写了两者,我们可以自由决定如何最好地从 COM 对象返回此 DIB。澄清一下,最好将本机 Windows 句柄返回到 DIB 或字节数组,还是有其他方法可以轻松地将 Windows DIB 转换为 .NET Image 对象?而且,与那个问题相关:一旦我得到了这个返回的 DIB,我怎么能把它变成一个 .NET Image 对象?
c++ - 这是在窗口中将大 DIB 绘制到屏幕上的禁食方法
我正在用 Windows C++ 编程。我想知道在屏幕上绘制 DIB 的禁食方法是什么。图像可能被拉伸。
比 StretchDIBits 快,比 SetDIBitsToDevice 快。比 StretchBits 更快。
并具有高拉伸质量。
非常感谢!
windows - 使用鼠标光标捕获屏幕截图
我使用以下代码在 Windows 上获取屏幕截图。
但是,鼠标光标不显示。
我怎么能得到光标?或者有图书馆可以做到这一点吗?
提前致谢。
delphi - Delphi DIB 与 DIB 标头到 TBitmap
我恳请您帮助我解决这个问题:
有一个字节数组 ( data: PByte
) 包含 DIB 数据和 DIBHeader:
如何在保持低 CPU 使用率的同时将 DIB 转换为 TBitmap?
我试过http://files.codes-sources.com/fichier.aspx?id=43989&f=GdipApi.pas没有成功。
我已将 DIB 分配给内存流:
我想应该在 Bitmap.LoadFromMemoryStream(DibMemStream) 之前的某处写有 DIB 标头。不知道在哪里。
请问有什么想法吗?
谢谢 !
c++ - CreateDIBSection 留下“存储空间不足”错误,但似乎仍然有效
每当我的应用程序尝试通过调用 CreateDIBSection() 或使用LR_CREATEDIBSECTION
标志调用 LoadImage() 来创建 DIB 部分时,它似乎都会成功返回。它返回的HBITMAP
是有效的,我可以很好地操作和显示它。
但是,对 GetLastError() 的调用将返回8: Not enough storage is available to process this command.
这从第一次调用到最后一次调用都会发生。请求的位图大小似乎无关紧要;800x600 或 16x16,结果相同。在函数调用之前,GetLastError() 没有返回错误;此外,在函数调用之前调用 SetLastError(0) 具有相同的结果。
我发现其他人提出了类似的问题,但事实证明他们正在使用 CreateCompatibleBitmap() 并且当他们切换到 CreateDIBSection() 时问题就消失了,或者他们已经在使用 CreateDIBSection() 并且它返回的结果是无效的,所以根本不工作。
由于事情似乎正在工作,我认为我可以忽略它(并在调用任一函数后调用 SetLastError(0)),但这样做可能会忽略一些微妙的问题。
当然,这是我正在使用的一些基本代码。首先,对 LoadImage() 的调用,它是基本位图类的一部分,我用于很多事情,并且我对其进行了相当多的简化以显示更相关的方面:
更新分层窗口时通常会调用 CreateDIBSection:
任何关于我完全偏离基础的任何指示都将不胜感激。
directx - 将颜色查找表与 Win32 DIB 一起使用的正确方法是什么?
我正在编写一些代码来对 16 位 DICOM 图像(作为 16 位 DIB 加载到内存中)执行窗口调平。我的窗口调平代码是完整的,并且通过生成查找表将源像素值映射到所需的最终像素值来工作。
我不确定如何将此查找表应用于图像。我看到 BITMAPINFO 对象上有一个字段“bmiColors”,类型为 RGBQUAD[]。我已经尝试将我的查找表分配给这个属性,但它似乎没有效果。我也尝试过 SetDIBColorTable 函数,但它似乎也对屏幕输出没有任何影响。
我正在尝试做的事情(在绘画时应用我的查找表,而不是修改像素数据本身)甚至在 GDI 中得到支持,还是实际上应该循环遍历像素数据本身,然后在 blitting 之前一一改变像素值?
我是否使用 BitBlt 或 SetDIBitsToDevice 函数似乎也没有什么不同。他们都倾向于在这里表现相同。
如果这样更容易实现我想要的,我愿意使用 DirectX。我以前没有使用过它,所以如果提供示例代码作为答案会很好。
我的代码对性能非常关键,所以我正在寻找实现这一目标的最快方法,即使它可能涉及更多的工作/代码。
image - 从像素缓冲区到设备上下文的最快方法
晚上好,
我在内存缓冲区中有几个 32 位图像,我希望快速将它们“blit”到设备上下文中。速度在这里是一个问题,因为缓冲区将被不断地操纵,并且需要重复地被 blitted 到 DC。
缓冲区的颜色深度是 32 位,因此它已经是 SetDIBits() 的 DIB 预期格式。然而,这相当麻烦,因为在操作之前无法将 SetDIBits() 的位图目标选择到 DC 中。所以我需要不断地换出 DC 的位图,调用 SetDIBits(),将位图换回 DC,然后将 DC blit 到 Window 的 DC。对我来说,这似乎是 CPU 上的大量工作负载以及 Windows API 中的过多分支;对于最佳性能来说太多了。
如果 DirectX 不强迫我使用设备上下文进行 2D 操作,或者在显示它们之前将纹理上传到视频内存,我会对使用 DirectX 感兴趣,因为图像的内容在不断变化。
我的问题很简单(尽管写得很长)。我将内存中的像素缓冲区中的图像blit到屏幕上的最快方法是什么?直接访问 DC 的像素缓冲区会很棒,但我知道这不会发生。
感谢您阅读我的长篇文章。
winapi - CreateDIBitmap 创建黑白图像
对于知道 CreateDIBitmap 故障排除的人
当我创建它时,传递所有希望正确的参数,我通过传递数据数组(位数组)创建它。该数组取自同一个位图(想法是创建一个新副本;出于测试目的)。但创建后(它返回正确的句柄),位图是正确的,但调色板是黑白的。没有颜色。为什么?谁知道?
c++ - 使用 GetDIBits 函数从 HBITMAP 接收到的 DIB 数据应该分配多少内存?
使用 GetDIBits 函数从 HBITMAP 接收到的 DIB 数据应该分配多少内存?
GetDIBits 函数在 MSDN 中描述如下:
但是,接收数据 lpvBits 的缓冲区必须在调用 GetDIBits 之前分配,因为 GetDIBits 不会自动分配它。
问题是应该分配多少内存来接收 DIB 数据?假设HBITMAP的width&height为Bmp_Width&Bmp_Height;并且位图是 32 位 (RGBA)。