问题标签 [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.
c++ - 快速调整 DIB 图像大小并保持良好的图像质量的代码
有许多算法可以调整图像大小 - lancorz、双三次、双线性,例如,但它们中的大多数都非常复杂,因此消耗过多的 CPU。
我需要的是快速相对简单的 C++ 代码来调整图像大小并具有可接受的质量。
这是我目前正在做的一个例子:
上面的代码速度够快,但是放大图片质量不行。
因此,可能有人已经有了用于扩展 DIB 的快速且良好的 C++ 代码示例?
注意:我以前使用过StretchDIBits - 当需要将 10000x10000 图片缩小到 100x100 大小时,它非常慢,我的代码要快得多,我只是想要更高的质量
PS 我正在使用我自己的 SetPixel/GetPixel 函数,直接使用数据数组并且速度很快,这不是设备上下文!
c - 如何将 rgb 图像数组从 sws_scale 转换为 DIB(在内存位图中)
我正在从流中解码视频帧,sws_scale 为我提供了一个解码后的 RGB 图像数据 (PIX_FMT_RGB24) 的缓冲区。我有一个需要输入为 DIB 的现有前端应用程序。所以我需要知道如何将此缓冲区转换为 DIB?
据我了解,Windows 上的 DIB 是 BGR,从下到上,需要一个标题。我希望这个问题已经得到解决,而不是手动执行。我也想知道也许 sws_scale 可以在本地做到这一点。
delphi - DIB 到 Tbitmap 代码操作以适应 PNG 图像?
我使用此代码将 DIB 转换为 TBitmap,那么如何操作此代码以适合 PNG 图像(保持其透明度)?我厌倦了将透明属性设置为 true,但似乎代码是为 256 色位图制作的。
代码来源:这里
windows - Windows 位图和 DIBSection 有什么区别?
我正在从具有以下内容的文件中加载 DIBSection:
根据经验,我发现加载的位图和我过去使用的位图之间存在以下差异,但我找不到任何说明应该存在差异的文档。
- 这些行在内存中是自上而下而不是自下而上排序的。我已验证 .bmp 文件本身是自下而上排序的。
- 行填充是 2 字节而不是 4 的倍数。
CreateDIBSection
当您使用从头开始创建 DIBSection时,我还发现了一个记录在案的差异。
- 返回的 DIBSECTION.dsHandle 和 BITMAP.bmBits 值
GetObject
将为 NULL。
前两个差异的文档在哪里,我错过了什么吗?这适用于 Windows 7,但我无法想象其他版本的 Windows 会有所不同。
编辑:一些额外的细节。这是一个十六进制转储temp.bmp
;这是一个 7x7 的图像,右侧有一条白色条纹,蓝色值沿左侧递增(0x10、0x20 等)。您可以看到底线 (00,00,70) 排在第一位,并且有 3 个字节的填充。
这是一个读取 .bmp 文件并写出内容的示例程序。为简洁起见,我删除了错误检查。
这是上述程序的输出以及所生成文件的十六进制转储:
pdf - 使用 C++ 将 PDF 中的图像数据 (PDEImage) 转换为 DIB?
我正在尝试提取 PDF 中的所有图像,然后将它们转换为 DIB 格式。第一部分很简单。我提取 PDF 中的所有内容,然后遍历它们,每当找到 PDEImage 时,我将它们放入一个数组中。
但我对如何进行第二部分一无所知。看起来所有的 AVConversion 方法都允许您将 PDF 的整个页面,而不仅仅是图像,转换为其他格式。
有什么办法可以完成这项任务吗?提前致谢!
编辑:进一步阐述问题。
我正在使用带有 .NET Framework 4 的 Visual C++ 编写 Adobe Acrobat 插件。
该插件的目的是(除其他外)从 PDF 文件中提取图像数据,然后将这些数据转换为 DIB。需要转换为 DIS 是因为我将这些 DIB 传递给另一个库,该库对它们进行一些图像校正工作。
现在我的问题是将PDF中的上述图像数据转换为DIB。PDF 上的图像数据以一种称为 PDEImage(参考链接)的格式找到,其中显然包含图像的所有颜色数据。现在我使用以下代码从图像中提取所述图像数据位,以与 CreateCompatibleBitmap() 和 SetBitmapBits() 一起使用以获得 HBITMAP 句柄。然后,我将它与其他必要的参数一起传递给 GetDIBits() 以获得 MSDN 中所述的字节数组形式的 DIB。
这是我的问题/疑虑。
我使用 CreateCompatibleDC()、CreateCompatibleBitmap() 和 SetBitmapBits() 函数的方式是否正确?我的想法是我使用 CreateCompatibleDC() 获取当前 DC,然后使用 CreateCompatibleBitmap() 创建一个 DDB,然后使用 SetBitmapBits() 将实际数据设置到 DDB。那是对的吗?
我创建 BITMAPINFO 结构的方式有问题吗?我假设它需要包含有关我最终将获得的 DIB 格式的所有详细信息。
为什么我在调用 GetDIBits() 时没有将位图数据作为 DIB 获取到 buff?
c - 什么是 Windows DIB?
我只是在论坛中讨论是否有 GDI 和 Direct X 的替代 Windows 图形库。有人提到WinDIB。遗憾的是,他没有对此作出更多解释。
现在我搜索了谷歌。
似乎没有关于 Windows DIB 的 Wikipedia 文章。
似乎 SDL 等一些图形库使用WinDIB 后端。
那么WinDIB到底是什么?有任何文件吗?我在哪里可以了解更多信息?
c# - 将 C# 位图转换为 RIOT 的 Windows dib 句柄?
我正在尝试实现一个使用 RIOT(激进图像优化工具)进行批量图像优化的应用程序。我可以成功地将riot.dll导入我的应用程序。但我无法弄清楚如何将 Windows DIB(设备独立位图)句柄传递给 RIOT 函数。
这是我的代码:
RIOT_Show()
并且RIOT_Load_From_File()
按预期工作但是当我尝试调用RIOT_SaveToFile()
它时给我这个错误:
System.AccessViolationException 未处理 - 试图读取或写入受保护的内存。这通常表明其他内存已损坏。
所以我的问题是:
- 如何将
System.Bitmap
对象转换为 Windows DIB 句柄? - 如果我无法转换,是否可以使用 C++ 库(如果有)为我完成这项工作并返回 DIB 句柄?
编辑:
我已将代码更改为此,但它给出了相同的错误。
c++ - 正交旋转与设备无关的位图 (DIB) 以在窗口中显示的最有效方法是什么?
我正在编写一些代码,它从连接的网络摄像头获取位图,将其顺时针旋转 90、180 或 270 度并将其显示在窗口中。
位图最初是作为与设备无关的位图提供的。允许我从源(位图)到目标(在屏幕上旋转)的最有效的调用系列(就复制内存而言)是什么?
我正在使用 C++ 和 Win32 API。
c++ - 如何将像素数组转换为 HBITMAP
我有一个像素数组,我需要将其转换为 HBITMAP 以便在窗口中显示它。我尝试使用 CreateDIBitmap() 但我没有 BMP 标头。我尝试根据 MSDN 文档手动构建它们,但这不起作用。
这是我的代码的外观
现在我得到一个非 NULL hBitmap 这很好,但它总是显示黑色图像,好像它没有指向像素数组。我使用代码检查了它
实际上 qB.bmBits 是 NULL。有什么问题以及如何解决?