34 lines
1.3 KiB
Haskell
34 lines
1.3 KiB
Haskell
module Main (main) where
|
|
|
|
import Codec.Picture
|
|
import qualified Data.Vector.Unboxed as VU
|
|
import Lib
|
|
|
|
caesarShift :: Int
|
|
caesarShift = 66
|
|
|
|
main :: IO ()
|
|
main = do
|
|
inputText <- readFile "resources/biography.txt"
|
|
putStrLn $ take 30 inputText
|
|
let alphabet = createAlphabetFromText inputText
|
|
putStrLn $ show (length alphabet)
|
|
let encryptedText = encryptCaesar alphabet caesarShift inputText
|
|
putStrLn $ take 30 encryptedText
|
|
let encryptedTextBits = textToBits encryptedText
|
|
putStrLn $ concat (take 30 (map show (VU.toList encryptedTextBits)))
|
|
let encryptedTextFromBits = bitsToText encryptedTextBits
|
|
putStrLn $ take 30 encryptedTextFromBits
|
|
let decryptedText = decryptCaesar alphabet caesarShift encryptedTextFromBits
|
|
putStrLn $ take 30 decryptedText
|
|
|
|
readImageResult <- readImage "resources/david.bmp"
|
|
case readImageResult of
|
|
Left err -> putStrLn $ "Ошибка при чтении изображения: " ++ err
|
|
Right dynImg -> do
|
|
let img = convertRGB8 dynImg
|
|
let width = imageWidth img
|
|
let height = imageHeight img
|
|
let resultImage = generateImage (encodePixel 1 img encryptedTextBits) width height
|
|
saveBmpImage "tmp/david.bmp" (ImageRGB8 resultImage)
|