7 Matching Annotations
  1. Jan 2020
  2. Oct 2018
    1. 8. Examples 8.1. Hello World! The following ni URI is generated from the text "Hello World!" (12 characters without the quotes), using the sha-256 algorithm shown with and without an authority field: ni:///sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk ni://example.com/sha-256;f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk The following HTTP URL represents a mapping from the previous ni name based on the algorithm outlined above. http://example.com/.well-known/ni/sha-256/ f4OxZX_x_FO5LcGBSKHWXfwtSx-j1ncoSt3SABJtkGk
    1. hash://sha256/9f86d081884c7d659a2feaa0?type=text/plain#top \__/ \____/ \______________________/ \_____________/ \_/ | | | | | scheme algorithm hash query fragment
  3. Feb 2018
    1. imgHash.py

      具体实现:

      #!/usr/bin/python
      
      import glob
      import os
      import sys
      
      from PIL import Image
      
      EXTS = 'jpg', 'jpeg', 'JPG', 'JPEG', 'gif', 'GIF', 'png', 'PNG'
      
      def avhash(im):
          if not isinstance(im, Image.Image):
              im = Image.open(im)
          im = im.resize((8, 8), Image.ANTIALIAS).convert('L')
          avg = reduce(lambda x, y: x + y, im.getdata()) / 64.
          return reduce(lambda x, (y, z): x | (z << y),
                        enumerate(map(lambda i: 0 if i < avg else 1, im.getdata())),
                        0)
      
      def hamming(h1, h2):
          h, d = 0, h1 ^ h2
          while d:
              h += 1
              d &= d - 1
          return h
      
      if __name__ == '__main__':
          if len(sys.argv) <= 1 or len(sys.argv) > 3:
              print "Usage: %s image.jpg [dir]" % sys.argv[0]
          else:
              im, wd = sys.argv[1], '.' if len(sys.argv) < 3 else sys.argv[2]
              h = avhash(im)
      
              os.chdir(wd)
              images = []
              for ext in EXTS:
                  images.extend(glob.glob('*.%s' % ext))
      
              seq = []
              prog = int(len(images) > 50 and sys.stdout.isatty())
              for f in images:
                  seq.append((f, hamming(avhash(f), h)))
                  if prog:
                      perc = 100. * prog / len(images)
                      x = int(2 * perc / 5)
                      print '\rCalculating... [' + '#' * x + ' ' * (40 - x) + ']',
                      print '%.2f%%' % perc, '(%d/%d)' % (prog, len(images)),
                      sys.stdout.flush()
                      prog += 1
      
              if prog: print
              for f, ham in sorted(seq, key=lambda i: i[1]):
                  print "%d\t%s" % (ham, f)
      

      参考代码:

      1. http://www.ruanyifeng.com/blog/2011/07/imgHash.txt
  4. Sep 2017