问题标签 [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.

0 投票
3 回答
3889 浏览

c++ - 快速调整 DIB 图像大小并保持良好的图像质量的代码

有许多算法可以调整图像大小 - lancorz、双三次、双线性,例如,但它们中的大多数都非常复杂,因此消耗过多的 CPU

我需要的是快速相对简单的 C++ 代码来调整图像大小并具有可接受的质量

这是我目前正在做的一个例子:

上面的代码速度够快,但是放大图片质量不行。

因此,可能有人已经有了用于扩展 DIB 的快速且良好的 C++ 代码示例?

注意:我以前使用过StretchDIBits - 当需要将 10000x10000 图片缩小到 100x100 大小时,它非常慢,我的代码要快得多,我只是想要更高的质量

PS 我正在使用我自己的 SetPixel/GetPixel 函数,直接使用数据数组并且速度很快,这不是设备上下文!

0 投票
1 回答
815 浏览

c - 如何将 rgb 图像数组从 sws_scale 转换为 DIB(在内存位图中)

我正在从流中解码视频帧,sws_scale 为我提供了一个解码后的 RGB 图像数据 (PIX_FMT_RGB24) 的缓冲区。我有一个需要输入为 DIB 的现有前端应用程序。所以我需要知道如何将此缓冲区转换为 DIB?

据我了解,Windows 上的 DIB 是 BGR,从下到上,需要一个标题。我希望这个问题已经得到解决,而不是手动执行。我也想知道也许 sws_scale 可以在本地做到这一点。

0 投票
1 回答
547 浏览

delphi - 如何将 DIB 转换为 TPNGObject?

我有一个 DIB 句柄。如何TPNGObject在保留透明度的情况下将其转换为?

编辑: 我在这个解决方案中使用方法 2这里

但是即使我将其Transparent标志设置为真,位图结果也不透明

0 投票
1 回答
1115 浏览

delphi - DIB 到 Tbitmap 代码操作以适应 PNG 图像?

我使用此代码将 DIB 转换为 TBitmap,那么如何操作此代码以适合 PNG 图像(保持其透明度)?我厌倦了将透明属性设置为 true,但似乎代码是为 256 色位图制作的。

代码来源:这里

0 投票
1 回答
2833 浏览

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 文件并写出内容的示例程序。为简洁起见,我删除了错误检查。

这是上述程序的输出以及所生成文件的十六进制转储:

0 投票
1 回答
1348 浏览

pdf - 使用 C++ 将 PDF 中的图像数据 (PDEImage) 转换为 DIB?

我正在尝试提取 PDF 中的所有图像,然后将它们转换为 DIB 格式。第一部分很简单。我提取 PDF 中的所有内容,然后遍历它们,每当找到 PDEImage 时,我将它们放入一个数组中。

但我对如何进行第二部分一无所知。看起来所有的 AVConversion 方法都允许您将 PDF 的整个页面,而不仅仅是图像,转换为其他格式。

有什么办法可以完成这项任务吗?提前致谢!

编辑:进一步阐述问题。

我正在使用带有 .NET Framework 4 的 Visual C++ 编写 Adob​​e Acrobat 插件。

该插件的目的是(除其他外)从 PDF 文件中提取图像数据,然后将这些数据转换为 DIB。需要转换为 DIS 是因为我将这些 DIB 传递给另一个库,该库对它们进行一些图像校正工作。

现在我的问题是将PDF中的上述图像数据转换为DIB。PDF 上的图像数据以一种称为 PDEImage(参考链接)的格式找到,其中显然包含图像的所有颜色数据。现在我使用以下代码从图像中提取所述图像数据位,以与 CreateCompatibleBitmap() 和 SetBitmapBits() 一起使用以获得 HBITMAP 句柄。然后,我将它与其他必要的参数一起传递给 GetDIBits() 以获得 MSDN 中所述的字节数组形式的 DIB。

这是我的问题/疑虑。

  1. 我使用 CreateCompatibleDC()、CreateCompatibleBitmap() 和 SetBitmapBits() 函数的方式是否正确?我的想法是我使用 CreateCompatibleDC() 获取当前 DC,然后使用 CreateCompatibleBitmap() 创建一个 DDB,然后使用 SetBitmapBits() 将实际数据设置到 DDB。那是对的吗?

  2. 我创建 BITMAPINFO 结构的方式有问题吗?我假设它需要包含有关我最终将获得的 DIB 格式的所有详细信息。

  3. 为什么我在调用 GetDIBits() 时没有将位图数据作为 DIB 获取到 buff?

0 投票
3 回答
6353 浏览

c - 什么是 Windows DIB?

我只是在论坛中讨论是否有 GDI 和 Direct X 的替代 Windows 图形库。有人提到WinDIB。遗憾的是,他没有对此作出更多解释。

现在我搜索了谷歌。

  • 似乎没有关于 Windows DIB 的 Wikipedia 文章。

  • 似乎 SDL 等一些图形库使用WinDIB 后端

那么WinDIB到底是什么?有任何文件吗?我在哪里可以了解更多信息?

0 投票
2 回答
2594 浏览

c# - 将 C# 位图转换为 RIOT 的 Windows dib 句柄?

我正在尝试实现一个使用 RIOT(激进图像优化工具)进行批量图像优化的应用程序。我可以成功地将riot.dll导入我的应用程序。但我无法弄清楚如何将 Windows DIB(设备独立位图)句柄传递给 RIOT 函数。

这是我的代码:

RIOT_Show()并且RIOT_Load_From_File()按预期工作但是当我尝试调用RIOT_SaveToFile()它时给我这个错误:

System.AccessViolationException 未处理 - 试图读取或写入受保护的内存。这通常表明其他内存已损坏。

所以我的问题是:

  1. 如何将System.Bitmap对象转换为 Windows DIB 句柄?
  2. 如果我无法转换,是否可以使用 C++ 库(如果有)为我完成这项工作并返回 DIB 句柄?

编辑:

我已将代码更改为此,但它给出了相同的错误。

0 投票
1 回答
606 浏览

c++ - 正交旋转与设备无关的位图 (DIB) 以在窗口中显示的最有效方法是什么?

我正在编写一些代码,它从连接的网络摄像头获取位图,将其顺时针旋转 90、180 或 270 度并将其显示在窗口中。

位图最初是作为与设备无关的位图提供的。允许我从源(位图)到目标(在屏幕上旋转)的最有效的调用系列(就复制内存而言)是什么?

我正在使用 C++ 和 Win32 API。

0 投票
3 回答
9227 浏览

c++ - 如何将像素数组转换为 HBITMAP

我有一个像素数组,我需要将其转换为 HBITMAP 以便在窗口中显示它。我尝试使用 CreateDIBitmap() 但我没有 BMP 标头。我尝试根据 MSDN 文档手动构建它们,但这不起作用。

这是我的代码的外观

现在我得到一个非 NULL hBitmap 这很好,但它总是显示黑色图像,好像它没有指向像素数组。我使用代码检查了它

实际上 qB.bmBits 是 NULL。有什么问题以及如何解决?