44from PIL import Image
55from typing import Union , Tuple
66from pathlib import Path
7- from utils import get_timestamp_as_md5
7+ from . utils import get_timestamp_as_md5 , read_settings
88
99class Steganography ():
1010 '''
1111 class for hiding and extracting message on your image
1212 '''
1313
1414 def __init__ (self ):
15- with open ("settings.json" , "r" ) as setting_file :
16- settings = json .load (setting_file )
15+ settings = read_settings ()
1716 self .bits = int (settings .get ('bits' , 8 ))
1817 self .encoding = settings .get ('encoding' , 'utf-8' )
1918 self .token_string = settings .get ('token_string' , '#secret#' )
@@ -31,15 +30,6 @@ def binstr_to_ascii(self, message:str) -> str: ###
3130 '''
3231 Convert binary string to ascii string
3332 '''
34-
35- # only ASCII
36- # binstr = map(''.join, zip(*[iter(message)]*8))
37- # result = str()
38- # for idx, bin in enumerate(binstr):
39- # print(bin)
40- # result += chr(int(bin, 2))
41-
42- # for UTF-8
4333 byte_list = [message [i :i + 8 ] for i in range (0 , len (message ), 8 )]
4434 result = bytes ([int (uint8 , 2 ) for uint8 in byte_list ]).decode ('utf-8' )
4535 return result
@@ -83,8 +73,6 @@ def message_to_binary(self, message:Union[bytes, str, int, np.ndarray, np.uint8]
8373 return '' .join (format (ord (char ), '08b' ) for char in message )
8474 elif type (message ) == bytes or type (message ) == np .ndarray :
8575 return [ format (i , "08b" ) for i in message ]
86- # elif type(message) == int or type(message) == np.uint8:
87- # return format(message, "08b")
8876 else :
8977 raise TypeError ("Input type not supported" )
9078
@@ -133,7 +121,7 @@ def get_lsb_string(self, imarray: np.ndarray) -> str:
133121 done = False
134122 for row_index , row in enumerate (imarray ):
135123 for col_index , col in enumerate (row ):
136- r , g , b = self .message_to_binary (col ) # unpack
124+ r , g , b = self .message_to_binary (col )
137125 binary_message += r [- 1 ] + g [- 1 ] + b [- 1 ]
138126 binary_token_index = binary_message .find (binary_token )
139127 if binary_token_index != - 1 :
0 commit comments