vevlins
V2EX  ›  算法

jpg 图片 SOF0 块的位置是不固定的吗?如何快速获取 SOF0 块获取图像宽高?

  •  
  •   vevlins · Sep 29, 2019 · 3657 views
    This topic created in 2458 days ago, the information mentioned may be changed or developed.

    想获取图片头信息拿到宽高信息,其他常见的格式如 png、gif 的宽高位置都是在固定位,只有 jpg 比较特殊。

    tfif 的一般在比较靠前的位置大概 500 位之内,exif 的前面是 app0_exif 等块,SOF0 要排到两三千开外了。

    只能通过获取 marker 的长度一个一个跳过直到找到 SOF0 块吗?另外没有 SOF0 只有 SOF1/SOF2 的原因是什么?这三个块只能同时存在一个吗?

    1 replies    2019-09-29 18:12:12 +08:00
    vevlins
        1
    vevlins  
    OP
       Sep 29, 2019
    > 另外没有 SOF0 只有 SOF1/SOF2 的原因是什么?这三个块只能同时存在一个吗?

    这个问题明白了,是跟渐进式等 jpg 格式有关,应该是只能存在一个。

    ```golang
    sof0Marker = 0xc0 // Start Of Frame (Baseline Sequential).
    sof1Marker = 0xc1 // Start Of Frame (Extended Sequential).
    sof2Marker = 0xc2 // Start Of Frame (Progressive).
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5385 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:34 · PVG 09:34 · LAX 18:34 · JFK 21:34
    ♥ Do have faith in what you're doing.