我需要从实际的图像文件中计算图像的宽度和高度,所以我正在用打开的文件读取图像。所以我有一堆字符和数字以及所有看起来毫无意义的东西,它们可能正在呈现 rgb 信息。我只想用我用 Erlang 语言编程的原始文件信息来计算图像的大小,但是只要我们不使用内置库,任何语言的代码都会有所帮助,因为我们正在使用原始文件。
提前谢谢大家的帮助
我需要从实际的图像文件中计算图像的宽度和高度,所以我正在用打开的文件读取图像。所以我有一堆字符和数字以及所有看起来毫无意义的东西,它们可能正在呈现 rgb 信息。我只想用我用 Erlang 语言编程的原始文件信息来计算图像的大小,但是只要我们不使用内置库,任何语言的代码都会有所帮助,因为我们正在使用原始文件。
提前谢谢大家的帮助
我通过查看每种格式的详细信息找到了答案,所以它的工作原理是这样的
JPG:您可以在字节“255,192,0,17,8”之后找到宽度和高度,然后是大小信息
PNG:您可以在“IHDR”之后找到它
GIF:你可以在“GIF89a”之后找到它
有更多信息,但这是互联网上最常见的图像类型
谢谢大家的时间
我假设当您说“原始”时,您的意思是您只有像素值。
在这种情况下,并不总是有办法知道宽度和高度。
假设您读取 400 像素。在这种情况下,有效的图像边可以是 400 的任何整数分解,例如 1x400、2x200、4x100、8x50、20x20 等,并且也可以转置。
更不用说许多图像格式包括一些像素行的填充,这些填充不是 4、8 或 16 的倍数......
它在图像文件中的编码方式取决于图像类型,希望也可以在图像文件中编码。您可以查看从二进制文件中获取 JPEG 的图像大小的问题,以获取JPEG 编码的示例。
如果您的数据未知,请使用 Octave 并加载图像。然后看看这个页面:
http://www.gnu.org/software/octave/doc/interpreter/Displaying-Images.html
用于显示图像的命令。希望通过一些操作它会起作用。这适用于原始图像,尽管有特定的解码器。一旦你了解了图像是怎样的,你就可以编写等效的 C 代码。