Искажение и сохранение изображения
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user