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

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

@@ -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
@@ -47,4 +50,12 @@ bitsToText bits
| otherwise = (chr $ bitsToInt (VU.take 8 bits)) : bitsToText (VU.drop 8 bits)
where
bitsToInt charBits =
sum [bit * (2 ^ index) | (bit, index) <- zip (VU.toList charBits) [7 :: Int,6..0]]
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