问题标签 [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.
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,我会遇到访问冲突。这是正常的还是有一些适当的方法可以释放它?
python - Delphi TBitmap 代码到 Python PIL
我正在尝试将一些 Delphi 代码转换为 Python PIL。问题是两方面的。首先,我不是 Delphi 程序员。其次,我今天之前没有使用过 PIL,所以我可能在这两个方面都有问题。
所以我知道 PixelFormat 属性表示每个像素的大小(以字节为单位)。我还知道 ScanLine 方法应该获取代表线条的像素数组。我没有得到的是,我倾向于将每个像素可视化为 RGB 值。我习惯于提取颜色值的最低有效位。但是,我认为我什至不确定现有代码正在提取什么。我有一些 python PIL 代码可以提取同一图像中每个像素的 RGB 值,但我不知道 RGB 值的元组与之前代码中获得的 PB 变量相比如何。根据一些实验,我猜它根本无法比较。
提前致谢。
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>ios - Delphi ios在ImageControl中缩放位图
我有 75*75 .png 文件,但我希望它们显示在 150x150 大小的 ImageControl 中,具有透明背景。我目前使用此代码:
我有以下问题:
1)如何保持透明度?(.png 中的透明区域转换为白色。) 2)我应该在 ImageControl 之外进行缩放以避免设置宽度/高度吗?
delphi - 如何在 TImage 上正确显示带有 alpha 通道的 TBitmap?
我有一个 TBitmap,它包含带有 alpha 通道的半透明图像(在这个例子中,我从 TPngImage 得到它)。
当我将此 TBitmap 保存到TestIn.bmp
文件并使用任何图像查看器打开它时,我可以看到透明度。但是当我将它分配给 TImage 时,透明像素显示为黑色(TImage 有Transparent = True
)。
如何在 TImage 上正确显示具有透明度的 TBitmap?
delphi - 删除 BMP 背景并使用 Delphi 转换为透明 PNG
我有一个 TBitmap,在 TBitmap 内部加载了一个“地图图像”(地图图像)。这张地图图像有一个白色背景和很多黑线(没有抗锯齿只有两种颜色的白色背景和黑线)。
现在我必须这样做:
- 从 TBitmap 中移除白色背景(透明背景和黑线);
- 如果可能且仅在可能的情况下将黑线颜色替换为另一种颜色;
- 将结果保存为透明的PNG图像;
我不知道这些是否可能。建议?
注意如果可能的话,我想避免使用课程的第 3 部分或 VCL。如果需要,我可以使用 FreeImage 库,因为我只是在我的项目中使用它。我使用德尔福 XE3。
c++builder - 如何将新的位图格式添加到 TBitmapCodecManager
我写了一个读写PPM文件的类(别问,我没选这种格式)。我希望它成为TBitmap
加载/保存系统的一部分。
有谁知道我可以如何添加这种支持?我真的必须编写/安装完整的编解码器吗?
解决方案:
通过 Remy Lebeau 的帖子,我设法编写并注册了一个编解码器。然而,所有需要的功能都没有记录,所以它需要一些试验/错误才能让它工作。
要注册新的编解码器,您需要使用这样的静态RegisterBitmapCodecClass
成员TBitmapCodecManager
。
编解码器需要定义这些函数:
该类Fmx::Surfaces::TBitmapSurface
没有任何文档痕迹,但 IDE 为我提供了可用的功能。我认为该Pixels[x][y]
数组用于读取/写入像素。
注册课程后,您可以像往常一样读取新的图像类型TBitmap->LoadFromFile("");
享受!
PS。那些投票结束这个的人,请评论为什么?如果我们不知道自己犯了什么错误,我们如何改进?
delphi - Delphi中Graphics.TBitmap的PixelFormat默认值
Delphi中TBitmap的PixelFormat默认值是多少?每次创建 TBitmap 时都需要指定 PixelFormat 吗?
例如,
android - Delphi XE7 Firemonkey - 创建 TBitmap 表单文件抛出 EJNIException java.lang.OutOfMemoryError
社区,
我的问题如下:
我为我的 Kindle Fire 编写了一个 XE7 FMX 应用程序,我想在其中使用 TBitmaps。问题是,我无法从设备的存储中创建 TBitmap。如果我在我的计算机上将应用程序作为 Win32 应用程序运行,则一切正常,但如果我将其作为 android 应用程序运行,它会从标题中抛出异常。
这是我的代码:
这段代码没有意义,但这只是一个测试程序。如果这可行,我可以在我的主程序中使用它,但此时它已经失败了。(而且我已经检查过他使用的是 FMX.Graphics.TBitmap 而不是 VCL)
这是我的堆栈:
错误在哪里?是我的错还是delphi出了什么问题?
android - 奇怪的 Delphi Android 图像分配/图像乱码问题
我有一些代码在 iO 中运行良好,但在 Android 上会导致图像完全混乱。我找到了部分解决方法(不调用某些代码),但它暗示了一些严重错误:
可以看出,这是把它搞砸的最后一行。在某些测试中,删除线似乎就足够了,但在其他测试中则不然。这是我对问题的最佳线索/描述/示例。
这是一个乱码图像的示例。由于每次运行应用程序时它们看起来都是一样的乱码,我怀疑它一定与图像有某种关系,但没有任何视觉相似性。
我的问题是有什么问题?我正在测试 Delphi XE7 试用版,所以我无法访问源代码。它在使用 XE4 和 XE7 的 iOS 上完美运行,但在 Android 上却发生了一些事情。我认为它可能是一些共享参考的位图数据......有没有人对如何测试这个理论/可能的解决方法有任何想法?