转储原始图像数据

Dump raw image data

本文关键字:数据 图像 原始 转储      更新时间:2023-10-16

我有一个图像以原始字节的形式存储在内存中,即我有一个指向图像数据的内存位置的char*。现在,我需要以某种方式验证图像数据是否合法。

我目前尝试的是简单地将字节转储到文件中。我尝试转储到 3 种类型的文件中,但没有运气:

std::ofstream ofs;
ofs.open("Image.raw", std::ofstream::out);
ofs.write((char*)imgData, imageInfo.imageLen);
ofs.close();
// Have also tried "Image.tiff" and "Image.ppm"

有什么方法可以查看内容吗?值得一提的是,我正在Win平台上编写此代码。几年前,我记得在MAC OS X上做了类似的事情,并产生了成功的结果!

您可以

像已经拥有的那样直接将其写成二进制的RGB - 例如名为image.rgb的文件。

然后使用ImageMagick,它安装在大多数Linux发行版上,可用于OSX和Windows,将其转换为PNG,JPEG或更常见的内容:

convert -size 300x400 -depth 8 image.rgb result.png

convert -size 300x400 -depth 8 image.rgb result.jpg

您需要告诉ImageMagick图像的尺寸,因为它们显然没有嵌入到原始文件中,就像它们在带有标题的 JPEG 或 PNG 中一样。

如果您选择的文件名不以 .rgb 结尾,则需要在它前面加上 RGB:像这样

convert -size ...   RGB:something.bin   result.png