问题标签 [bmp]

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 投票
1 回答
2132 浏览

android - Android:解码位图图像的问题

在我的项目中,我有一张图片,我通过程序提取像素,处理这些像素,然后将其保存在我的包中。我保存它的方式是:

所以,它将我的图片保存在这个目录中

/data/data/my_package_name/files/myPic.bmp

现在,我想阅读这张新图片并提取这张图片的像素。我用过这个方法:

程序在这里崩溃。logcat 指示图像的结果为 null 并且程序到达 getWidth 时崩溃。

这些写作和阅读方式正确吗?能否通过模拟器进入目录查看这张图片是否创建?

谢谢

0 投票
2 回答
1647 浏览

image - 如何区分原始 .BMP/.EMF 图片文件与处理后的 .BMP/.EMF 文件?

总结:

  1. 计算直截了当地指出:一张 3289 X 4570 X 32bpp 的 .BMP 图片大约需要 53MB。相同大小但24bpp的图片大约需要43MB,16bpp的图片大约需要28MB。在我的情况下,必须将 ChemDraw 处理的图片文件从 24bpp 转换为 16bpp。

  2. 进一步比较两个文件的十六进制数据,可以更详细地了解 ChemDraw 处理的图片和原始图片之间的差异。具体来说,ChemDraw 存储“EMF_STRETCHDIBITS”而不是“EMF_STRETCHBLT”。需要补充的是,在将像素复制到 TMetaFile/TMetaFileCanvas 时,可以通过调用 StretchDIBits 来完成“EMF_STRETCHDIBITS”。还应注意,“EMF_STRETCHDIBITS”的像素应与“EMF_STRETCHBLT”的像素相同。

  3. 不幸的是,直到现在我还没有弄清楚 ChemDraw 究竟是如何处理和存储粘贴的图片的。也就是说,我没有发现为什么 ChemDraw 存储的像素与我通过编程可以获得的不同。

    PS:我稍后会就这个问题投票赞成答案,因为我目前没有足够的声誉。感谢所有好心评论的人!

===</p>

你好,

非常感谢您的时间!

假设我有一张名为“sample_original.bmp”的图片。文件大小为 3289 X 4570、43MB。然后我执行以下操作将其转换为 .EMF 文件(增强型 Windows 元文件):

方法 1,通过制作一个小的内部 Delphi 程序: (1) 加载 .BMP 图像文件。(2) 获取TMetaFile(TMetaFileCanvas) 的Canvas (3) 调用Canvas.Draw 复制图像。(4) 保存为.EMF文件,命名为“sample_original_bmp2emf_method1.emf”

方法二:(1)在mspaint程序中打开.BMP图片文件,选择“全选”,选择“复制”。(2) 打开一个名为 ChemDraw 的外部程序,新建文件,然后选择“粘贴”。(3) 然后我选择将其保存为与 XML 兼容的 .cdxml 格式,命名为“sample_original_bmp2emf_method2.cdxml”。(4) 图片的内容(可能改变或退化?)现在保存在sample_original_bmp2emf_method2.cdxml 文件中。格式是 Base64 编码的 zlib 压缩格式。(5)我可以对XML字符串进行Base64解码,zlib-解压,保存到图片文件“sample_original_bmp2emf_method2.emf”中。

sample_original_bmp2emf_method2.emf 的文件大小比 sample_original_bmp2emf_method1.emf 小 15 MB,但宽度和高度保持不变。此外,如果我在 mspaint 程序中打开“sample_original_bmp2emf_method2.emf”并将其保存回 .bmp 文件格式,则会弹出一条警告说透明信息正在丢失。

您能否帮助评论如何区分“sample_original_bmp2emf_method1.emf”和“sample_original_bmp2emf_method2.emf”?图片变小是因为它的质量下降了吗?换句话说,这个外部程序可能会对我的原始图片进行哪些更改?

最良好的祝愿,

上面提到的文件可以在以下网址下载:

http://www.rapidspread.com/file.jsp?id=2ighvzoci8

PS:我相信 Andreas Rejbrand 已经很友好地做出了回答,然后我给出了我的评论。但我现在看不到那些。它应该是系统的正常行为吗?o_o

0 投票
1 回答
1774 浏览

c++ - 如何使用 BITMAPV5HEADER 标头创建位图?

这是我当前的代码,但在转换为 BITMAPINFOHEADER 时会导致错误:

我怎样才能成功地做到这一点?

0 投票
2 回答
2578 浏览

java - 如何重新设置 BMP 文件的分辨率 (DPI) 指示器?

我有一个标记为 299 DPI 分辨率的 BMP。我想将其更改为 99 DPI。

重要的是,BMP 中的 DPI 标记没有结构意义。图像具有一定的像素宽度和高度。显示应用程序可以以英寸为单位显示任何宽度的图像。

所以,DPI 只是一个提示。

但是,我正在处理一些第三方软件,这些软件的行为取决于这个标记,所以我需要重新设置它。

我将感谢有关如何在 Java 以及 GUI 图形工具(例如 Gimp)中以编程方式执行此操作的建议。

0 投票
3 回答
6484 浏览

delphi - 在 Delphi 2007 中将具有透明度的位图保存为 PNG

我有一个具有透明度信息的 Delphi 位图(32 位)。我需要在保留透明度的同时将其转换并保存为 PNG 文件。

我目前拥有的工具是 graphics32 库、GR32_PNG(由 Christian Budde 提供)和 PNGImage(由 Gustavo daud 提供)。

做这个的最好方式是什么?

编辑 1:我的位图中不仅有一种颜色是透明的,而且需要保留具有不同透明度级别的像素。

编辑 2:我通过将图像的背景设置为 PNG 来获取带有 alpha 信息的位图,我只有一个空的 alpha 层。然后我在上面写上抗锯齿文本。然后我保存位图。当使用 gimp 打开时,它会显示透明度,放大后您可以看到抗锯齿的效果。

0 投票
2 回答
3676 浏览

delphi - delphi TBitmap 是否支持 alpha 通道

我听到人们说不是。

但是,我创建了一个 TBitmap 并清除了整个区域

然后我在位图上绘制抗锯齿文本并将其保存到文件中。在 gimp 中打开它后,它会显示透明度信息。

有没有人对此有明确的答案,如果它确实有效,那么有关它如何工作的更多信息?我试过玩最后一个字节,但在 gimp 中打开它时没有得到预期的结果。

0 投票
1 回答
3175 浏览

c - 在 C 中查找 .bmp 图像的宽度和高度

我想知道是否有可能在 C 中找到 .bmp 图像的宽度和高度。我到处查看,但我只能找到 c#、.NET 和 C++ 中的示例。但是,我找不到任何与 C 相关的代码。如果可能,请提供帮助。

0 投票
3 回答
2298 浏览

visual-c++ - 在 Visual C++ 6.0 中将 .bmp 转换为 .jpg

我有一个接收和保存位图文件 (*.bmp) 的 Windows C++ 程序。我的客户希望将位图保存为 JPEG 文件。这在 Visual Studio 2008 中看起来非常简单,但我坚持使用 Visual Studio 6.0(我的雇主将在这些天升级其中一个,但不是今天)。有没有一种简单的方法可以在 VC++6.0 中进行转换,还是我需要一个外部实用程序?我没有资源(即时间)来“自己动手”。

0 投票
2 回答
477 浏览

c - bmp文件处理

有人可以帮助在 c 中编写代码以将 24 位 bmp 像素值放入 2d 数组中,以便提前处理它

0 投票
1 回答
360 浏览

wpf - 如何改进 WPF 绘图应用程序?

以下是我将图像绘制为边框对象背景的代码。

上面的 DrawImage() 方法每秒钟调用一次。所有操作都运行良好,但速度太慢。

我想提高性能。有什么改进的地方吗?也许,我猜任何 bmp 图像处理方法都比我使用的更好。帮我...