问题标签 [tbitmap]

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 投票
0 回答
1185 浏览

delphi - 尝试将 TBitmaps 写入 AVI 文件并仅获取黑帧(全零数据)

我有一个 Delphi 应用程序,它从文件中读取 JPEG 帧并将它们写入 AVI 文件。每个 JPEG 帧都被解码为一个 TBitmap 对象,然后使用由用于 AVI 操作的 Windows API DLL (AVIFIL32.DLL) 提供的服务,通过 Delphi 6 VFW.PAS 单元写入一个输出 AVI 文件。

问题是我最终在输出文件中出现了所有黑框。我知道在调用 AVIStreamWrite() 之前用作源的 TBitmaps 具有有效数据,因为我已使用 TBitmap.SaveToFile() 方法将它们写入磁盘并且源图像看起来很好。但我仍然以黑框结束。我从 TBitmap 获取位的方式有问题,因为如果我检查它指向的内存区域,GetDIBBits() 返回的指针显示所有零。

下面是我的代码。我究竟做错了什么?此外,如果我尝试释放 CreateDIBSection() 返回的第一个 pBits,我会遇到访问冲突。这是正常的还是有一些适当的方法可以释放它?

0 投票
2 回答
529 浏览

python - Delphi TBitmap 代码到 Python PIL

我正在尝试将一些 Delphi 代码转换为 Python PIL。问题是两方面的。首先,我不是 Delphi 程序员。其次,我今天之前没有使用过 PIL,所以我可能在这两个方面都有问题。

所以我知道 PixelFormat 属性表示每个像素的大小(以字节为单位)。我还知道 ScanLine 方法应该获取代表线条的像素数组。我没有得到的是,我倾向于将每个像素可视化为 RGB 值。我习惯于提取颜色值的最低有效位。但是,我认为我什至不确定现有代码正在提取什么。我有一些 python PIL 代码可以提取同一图像中每个像素的 RGB 值,但我不知道 RGB 值的元组与之前代码中获得的 PB 变量相比如何。根据一些实验,我猜它根本无法比较。

提前致谢。

0 投票
2 回答
1567 浏览

delphi - TBitmap 到 TPngImage 和内存使用情况

我有一个包含 11 个白色 TBitmap(32 位 512x512 像素 = 1 MB)的数组,我想将它们分配给 TPngImage 数组以减少内存使用量,我希望 1 mb 白色位图变为 1.76 KB png,内存使用量急剧下降我用任务管理器监控它,差异只有 0.824 MB,为什么会这样?在内存中无损压缩 TBitmap 的最佳/快速方法是什么?

p>


更新

Form @bummi research 我认为最好的办法是将 pngs 保存在内存流数组中,这样可以产生 9.7 MB 的差异。

p>

0 投票
1 回答
665 浏览

ios - Delphi ios在ImageControl中缩放位图

我有 75*75 .png 文件,但我希望它们显示在 150x150 大小的 ImageControl 中,具有透明背景。我目前使用此代码:

我有以下问题:

1)如何保持透明度?(.png 中的透明区域转换为白色。) 2)我应该在 ImageControl 之外进行缩放以避免设置宽度/高度吗?

0 投票
1 回答
6679 浏览

delphi - 如何在 TImage 上正确显示带有 alpha 通道的 TBitmap?

我有一个 TBitmap,它包含带有 alpha 通道的半透明图像(在这个例子中,我从 TPngImage 得到它)。

当我将此 TBitmap 保存到TestIn.bmp文件并使用任何图像查看器打开它时,我可以看到透明度。但是当我将它分配给 TImage 时,透明像素显示为黑色(TImage 有Transparent = True)。

如何在 TImage 上正确显示具有透明度的 TBitmap?

0 投票
1 回答
2753 浏览

delphi - 删除 BMP 背景并使用 Delphi 转换为透明 PNG

我有一个 TBitmap,在 TBitmap 内部加载了一个“地图图像”(地图图像)。这张地图图像有一个白色背景和很多黑线(没有抗锯齿只有两种颜色的白色背景和黑线)。

现在我必须这样做:

  • 从 TBitmap 中移除白色背景(透明背景和黑线);
  • 如果可能且仅在可能的情况下将黑线颜色替换为另一种颜色;
  • 将结果保存为透明的PNG图像;

我不知道这些是否可能。建议?

注意如果可能的话,我想避免使用课程的第 3 部分或 VCL。如果需要,我可以使用 FreeImage 库,因为我只是在我的项目中使用它。我使用德尔福 XE3。

0 投票
1 回答
644 浏览

c++builder - 如何将新的位图格式添加到 TBitmapCodecManager

我写了一个读写PPM文件的类(别问,我没选这种格式)。我希望它成为TBitmap加载/保存系统的一部分。

有谁知道我可以如何添加这种支持?我真的必须编写/安装完整的编解码器吗?

解决方案:

通过 Remy Lebeau 的帖子,我设法编写并注册了一个编解码器。然而,所有需要的功能都没有记录,所以它需要一些试验/错误才能让它工作。

要注册新的编解码器,您需要使用这样的静态RegisterBitmapCodecClass成员TBitmapCodecManager

编解码器需要定义这些函数:

该类Fmx::Surfaces::TBitmapSurface没有任何文档痕迹,但 IDE 为我提供了可用的功能。我认为该Pixels[x][y]数组用于读取/写入像素。

注册课程后,您可以像往常一样读取新的图像类型TBitmap->LoadFromFile("");

享受!

PS。那些投票结束这个的人,请评论为什么?如果我们不知道自己犯了什么错误,我们如何改进?

0 投票
1 回答
1126 浏览

delphi - Delphi中Graphics.TBitmap的PixelFormat默认值

Delphi中TBitmap的PixelFormat默认值是多少?每次创建 TBitmap 时都需要指定 PixelFormat 吗?

例如,

0 投票
3 回答
3363 浏览

android - Delphi XE7 Firemonkey - 创建 TBitmap 表单文件抛出 EJNIException java.lang.OutOfMemoryError

社区,

我的问题如下:

我为我的 Kindle Fire 编写了一个 XE7 FMX 应用程序,我想在其中使用 TBitmaps。问题是,我无法从设备的存储中创建 TBitmap。如果我在我的计算机上将应用程序作为 Win32 应用程序运行,则一切正常,但如果我将其作为 android 应用程序运行,它会从标题中抛出异常。

这是我的代码:

这段代码没有意义,但这只是一个测试程序。如果这可行,我可以在我的主程序中使用它,但此时它已经失败了。(而且我已经检查过他使用的是 FMX.Graphics.TBitmap 而不是 VCL)

这是我的堆栈:

错误在哪里?是我的错还是delphi出了什么问题?

0 投票
1 回答
1193 浏览

android - 奇怪的 Delphi Android 图像分配/图像乱码问题

我有一些代码在 iO 中运行良好,但在 Android 上会导致图像完全混乱。我找到了部分解决方法(不调用某些代码),但它暗示了一些严重错误:

可以看出,这是把它搞砸的最后一行。在某些测试中,删除线似乎就足够了,但在其他测试中则不然。这是我对问题的最佳线索/描述/示例。

这是一个乱码图像的示例。由于每次运行应用程序时它们看起来都是一样的乱码,我怀疑它一定与图像有某种关系,但没有任何视觉相似性。

在此处输入图像描述 我的问题是有什么问题?我正在测试 Delphi XE7 试用版,所以我无法访问源代码。它在使用 XE4 和 XE7 的 iOS 上完美运行,但在 Android 上却发生了一些事情。我认为它可能是一些共享参考的位图数据......有没有人对如何测试这个理论/可能的解决方法有任何想法?