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)