【问题标题】:Calculate the height and width of image from the source file从源文件计算图像的高度和宽度
【发布时间】:2013-04-03 00:05:56
【问题描述】:

我需要从实际的图像文件中计算图像的宽度和高度,所以我正在读取带有打开文件的图像。所以我有一堆字符和数字以及所有看起来毫无意义的东西,它们可能正在呈现 rgb 信息。 我只想用原始文件信息计算图像的大小 我正在使用 Erlang 语言进行编程,但是只要我们不使用内置库,任何语言的代码都会有所帮助,因为我们正在处理原始文件。

提前感谢大家的帮助

【问题讨论】:

  • 图片是什么格式的? JPEG、PNG、GIF 还是其他格式?
  • 这个问题太开放了,无法解决。你必须缩小问题的范围。

标签: image-processing erlang


【解决方案1】:

我通过查看每种格式的详细信息找到了答案, 所以它是这样工作的

JPG:你可以在字节“255,192,0,17,8”之后找到宽度和高度,然后是大小信息

PNG:你可以在“IHDR”之后找到它

GIF : 你可以在“GIF89a”之后找到它

有更多信息,但这是互联网上最常见的图像类型

感谢大家的宝贵时间

【讨论】:

    【解决方案2】:

    我假设当您说“原始”时,您的意思是您只有像素值。
    在这种情况下,并不总是有办法知道宽度和高度。

    假设您读取 400 像素。在这种情况下,有效的图像边可以是 400 的任何整数分解,例如1x400、2x200、4x100、8x50、20x20 等以及转置。

    更不用说许多图像格式包含一些像素行的填充,这些像素行不是 4、8 或 16 的倍数...

    【讨论】:

    • 那么实际程序如何计算图像的大小?就像如果你继续属性它有宽度和高度!他们是怎么计算的!
    • 他们不计算它。它与通道数、像素深度、压缩类型等其他元数据一起写入图像标题中。
    • 如何通过程序读取此标头并按您所说的获取属性?他们被保存在哪里?
    • 这取决于图像格式。每种格式都不同。最简单的格式可能是 PPM、PGM 和 PBM 系列,它们就像带有简单文本标题的原始格式。
    • @KhashayarNapster,您是唯一知道图像格式的人。如果您要命名格式,我们可能会为您指出规范。
    【解决方案3】:

    它在图像文件中的编码方式取决于图像类型,希望也可以在图像文件中编码。您可以查看问题 Getting Image size of JPEG from its binary 以获取 JPEG 编码的示例。

    【讨论】:

      【解决方案4】:

      如果您的数据未知,请使用 Octave 并加载图像。然后看看这个页面:

      http://www.gnu.org/software/octave/doc/interpreter/Displaying-Images.html

      用于显示图像的命令。希望通过一些操作它会起作用。这适用于原始图像,尽管有特定的解码器。一旦你理解了图像是怎样的,你就可以编写等效的 C 代码了。

      【讨论】:

        猜你喜欢
        • 2019-05-31
        • 1970-01-01
        • 2011-03-28
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多