转储原始图像数据
Dump raw image data
我有一个图像以原始字节的形式存储在内存中,即我有一个 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
图像的尺寸,因为它们显然没有嵌入到原始文件中,就像它们在带有 header 的 JPEG 或 PNG 中一样。
如果您选择的文件名不是以 .rgb 结尾,则需要在其前面加上 RGB:像这样
convert -size ... RGB:something.bin result.png
我有一个图像以原始字节的形式存储在内存中,即我有一个 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
图像的尺寸,因为它们显然没有嵌入到原始文件中,就像它们在带有 header 的 JPEG 或 PNG 中一样。
如果您选择的文件名不是以 .rgb 结尾,则需要在其前面加上 RGB:像这样
convert -size ... RGB:something.bin result.png