Искажение и сохранение изображения

This commit is contained in:
2024-11-18 02:07:14 +03:00
parent e6d636cff2
commit 5711244be4
2 changed files with 17 additions and 4 deletions

View File

@@ -27,5 +27,7 @@ main = do
Left err -> putStrLn $ "Ошибка при чтении изображения: " ++ err
Right dynImg -> do
let img = convertRGB8 dynImg
putStrLn $ "Ширина: " ++ show (imageWidth img)
putStrLn $ "Высота: " ++ show (imageHeight img)
let width = imageWidth img
let height = imageHeight img
let resultImage = generateImage (encodePixel 1 img encryptedTextBits) width height
saveBmpImage "tmp/david.bmp" (ImageRGB8 resultImage)

View File

@@ -4,9 +4,12 @@ module Lib
encryptCaesar,
decryptCaesar,
textToBits,
bitsToText
bitsToText,
encodePixel
) where
import Codec.Picture
import Data.Char (ord, chr)
import Data.Bits (testBit)
import qualified Data.Vector.Unboxed as VU
@@ -48,3 +51,11 @@ bitsToText bits
where
bitsToInt charBits =
sum [bit * (2 ^ index) | (bit, index) <- zip (VU.toList charBits) [7 :: Int,6..0]]
encodePixel :: Int -> Image PixelRGB8 -> VU.Vector Int -> Int -> Int -> PixelRGB8
encodePixel encodeBitsCount img bits x y = PixelRGB8 newR newG newB
where
PixelRGB8 r g b = pixelAt img x y
newR = b
newG = g
newB = r