Compute hash of only the core image data (excluding metadata) for an image

后端 未结 4 2043
花落未央
花落未央 2020-12-13 20:31

I\'m writing a script to calculate the MD5 sum of an image excluding the EXIF tag.

In order to do this accurately, I need to know where the EXIF tag is located in th

4条回答
  •  轮回少年
    2020-12-13 20:47

    You can use stream which is part of the ImageMagick suite:

    $ stream -map rgb -storage-type short image.tif - | sha256sum
    d39463df1060efd4b5a755b09231dcbc3060e9b10c5ba5760c7dbcd441ddcd64  -
    

    or

    $ sha256sum <(stream -map rgb -storage-type short image.tif -)
    d39463df1060efd4b5a755b09231dcbc3060e9b10c5ba5760c7dbcd441ddcd64  /dev/fd/63
    

    This example is for a TIFF file which is RGB with 16 bits per sample (i.e. 48 bits per pixel). So I use map to rgb and a short storage-type (you can use char here if the RGB values are 8-bits).

    This method reports the same signature hash that the verbose Imagemagick identify command reports:

    $ identify -verbose image.tif | grep signature
    signature: d39463df1060efd4b5a755b09231dcbc3060e9b10c5ba5760c7dbcd441ddcd64
    

    (for ImageMagick v6.x; the hash reported by identify on version 7 is different to that obtained using stream, but the latter may be reproduced by any tool capable of extracting the raw bitmap data - such as dcraw for some image types.)

提交回复
热议问题