从这里看到的: http://www.adayinthelifeof.nl/2010/01/14/handling-binary-data-in-php-with-pack-and-unpack/ http://www.garykessler.net/library/file_sigs.html 文中给了PNG示例。我仿了一下,给了JPG示例。

$fh = fopen('e:/temp/d3.jpg', 'rb');
$jpg =  fread ($fh, 14);
$header = unpack ("C4header/C2length/A4identifier/C1?/C2version/C1units/", $jpg);
fclose($fh);
print_r($header);

格式如下

Start of Image (SOI) marker – two bytes (FFD8) JFIF marker (FFE0)

  • length – two bytes

  • identifier – five bytes: 4A, 46, 49, 46, 00 (the ASCII code equivalent of a zero terminated “JFIF” string)

  • version – two bytes: often 01, 02

    • the most significant byte is used for major revisions
    • the least significant byte for minor revisions
  • units – one byte: Units for the X and Y densities

    • 0 => no units, X and Y specify the pixel aspect ratio
    • 1 => X and Y are dots per inch
    • 2 => X and Y are dots per cm
  • Xdensity – two bytes

  • Ydensity – two bytes

  • Xthumbnail – one byte: 0 = no thumbnail

  • Ythumbnail – one byte: 0 = no thumbnail

  • (RGB)n – 3n bytes: packed (24-bit) RGB values for the thumbnail pixels, n = Xthumbnail * Ythumbnail

identifier无法5个一起取出,我就先取了4个,然后再取一个。