packages feed

handwriting-0.1.0.2: app/Main.hs

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Network.Handwriting

import System.Environment   (getEnv)

import Data.ByteString.Lazy (writeFile, ByteString)
import Prelude hiding       (writeFile) 
import System.Directory     (getCurrentDirectory)
import System.FilePath      ((</>))
import System.Random        (newStdGen, randomR)
import Data.Text            (unpack)

main :: IO ()
main = do
  -- Credentials
  key <- getEnv "KEY"
  secret <- getEnv "SECRET"
  let creds = Credentials key secret

  -- Get all handwritings
  handwritings <- getHandwritings creds

  -- Generate random number in range of handwritings
  g <- newStdGen
  let rand = randomR (0, length handwritings - 1) g

  -- Select random handwriting font
  let id = unpack $ handwritingId $ handwritings !! fst rand
  handwriting <- getHandwriting creds id
  print handwriting

  -- Generate image
  let params = defaultImageParams {format              = PNG, 
                                   hId                 = Just "31SB2CWG00DZ",
                                   size                = Just 205,
                                   lineSpacing         = Just 2,
                                   lineSpacingVariance = Just 0.2,
                                   wordSpacingVariance = Just 0.4,
                                   width               = Just 800,
                                   randomSeed          = Randomize}
  imageByteString <- renderImage creds params "Hello World!"

  -- Write image to current directory
  writeHandwritingFile imageByteString "image.png"

writeHandwritingFile :: ByteString -> String -> IO ()
writeHandwritingFile image name = do
  dir <- getCurrentDirectory
  let imageDir = dir </> name
  writeFile imageDir image