[Haskell-cafe] ANN: blockhash-

KwangYul Seo kwangyul.seo at gmail.com
Tue Jul 19 04:07:54 UTC 2016

Hi all!

I'm pleased to announce the first release of blockhash, a perceptual image
hash calculation tool based on algorithm described in Block Mean Value
Based Image Perceptual Hashing by Bian Yang, Fan Gu and Xiamu Niu.




Usage: blockhash [-q|--quick] [-b|--bits ARG] filenames

Available options:
  -h,--help                Show this help text
  -q,--quick               Use quick hashing method
  -b,--bits ARG            Create hash of size N^2 bits.


import qualified Codec.Picture as P
import Data.Blockhash
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Unboxed as V

printHash :: FilePath -> IO ()
printHash :: filename = do
  res <- P.readImage filename
  case res of
    Left err -> putStrLn ("Fail to read: " ++ filename)
    Right dynamicImage -> do
      let rgbaImage = P.convertRGBA8 dynamicImage
          pixels = VG.convert (P.imageData rgbaImage)
          image = Image { imagePixels = pixels
                        , imageWidth = P.imageWidth rgbaImage
                        , imageHeight = P.imageHeight rgbaImage }
          hash = blockhash image 16 Precise
      putStrLn (show hash)

For further information on the blockhash algorithm, please visit the web


Kwang Yul Seo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160719/6e94ccf2/attachment.html>

More information about the Haskell-Cafe mailing list