MCPcopy Create free account
hub / github.com/MearaY/StegaPy / embed_data

Method embed_data

StegaPy/plugin/lsb/lsb_plugin.py:37–61  ·  view source on GitHub ↗

嵌入数据到封面图像

(self, msg: bytes, msg_filename: Optional[str],
                   cover: Optional[bytes], cover_filename: Optional[str],
                   stego_filename: Optional[str])

Source from the content-addressed store, hash-verified

35 return "LSB(最低有效位)隐写算法,将数据隐藏在图像像素的最低有效位中"
36
37 def embed_data(self, msg: bytes, msg_filename: Optional[str],
38 cover: Optional[bytes], cover_filename: Optional[str],
39 stego_filename: Optional[str]) -> bytes:
40 """嵌入数据到封面图像"""
41 try:
42 # 如果没有提供封面图像,生成随机图像
43 if cover is None:
44 # 计算需要的像素数
45 from .lsb_data_header import LSBDataHeader
46 header_size = LSBDataHeader.get_max_header_size()
47 num_pixels = int(header_size * 8 / 3.0)
48 num_pixels += int(len(msg) * 8 / (3.0 * self.config.get_max_bits_used_per_channel()))
49 image = ImageUtil.generate_random_image(num_pixels)
50 else:
51 image = ImageUtil.byte_array_to_image(cover, cover_filename)
52
53 # 使用LSB输出流嵌入数据
54 lsb_os = LSBOutputStream(image, len(msg), msg_filename, self.config)
55 lsb_os.write(msg)
56 lsb_os.flush()
57 image = lsb_os.get_image()
58
59 return ImageUtil.image_to_byte_array(image, stego_filename)
60 except Exception as e:
61 raise StegaPyException(str(e), StegaPyErrors.UNHANDLED_EXCEPTION, self.NAMESPACE)
62
63 def extract_msg_filename(self, stego_data: bytes,
64 stego_filename: Optional[str]) -> str:

Callers

nothing calls this directly

Calls 10

writeMethod · 0.95
flushMethod · 0.95
get_imageMethod · 0.95
LSBOutputStreamClass · 0.85
StegaPyExceptionClass · 0.85
get_max_header_sizeMethod · 0.80
generate_random_imageMethod · 0.80
byte_array_to_imageMethod · 0.80
image_to_byte_arrayMethod · 0.80

Tested by

no test coverage detected