from PIL import Image
# /
char_set = ""
#
def encode_image(image_path, char_set):
#
image = Image.open(image_path)
#
width, height = image.size
#
encoded_image = ""
#
for y in range(height):
for x in range(width):
# RGB-
rgb = image.getpixel((x, y))
#
index = (int(rgb[0] / 256 * len(char_set)) + int(rgb[1] / 256 * len(char_set)) * 256 + int(rgb[2] / 256 * len(char_set)) * 256 * 256) % len(char_set)
#
char = char_set[index]
#
encoded_image += char
return encoded_image
#
def decode_image(encoded_image, char_set, width, height):
#
image = Image.new("RGB", (width, height))
#
for i in range(len(encoded_image)):
#
index = (i % len(char_set)) % len(char_set)
# RGB-
rgb = [int(char_set[index] / len(char_set) * 256), int(char_set[index + len(char_set)] / len(char_set) * 256), int(char_set[index + 2 * len(char_set)] / len(char_set) * 256)]
# RGB-
image.putpixel((i % width, i // width), tuple(rgb))
return image
#
image_path = " .jpg"
#
width, height = Image.open(image_path).size
#
encoded_image = encode_image(image_path, char_set)
#
with open("encoded_image.txt", "w", encoding='utf-8') as f:
f.write(encoded_image)
print(" 33 .")
#
with open("encoded_image.txt", "r", encoding='utf-8') as f:
encoded_image = f.read()
decoded_image = decode_image(encoded_image, char_set, width, height)
#
decoded_image.save("decoded_image.png")
print(" .")
encoded_image.txt
gpt
33 .
Traceback (most recent call last):
File "C:\Users\MSI\Desktop\ .py", line 71, in <module>
decoded_image = decode_image(encoded_image, char_set, width, height)
File "C:\Users\MSI\Desktop\ .py", line 45, in decode_image
rgb = [int(char_set[index] / len(char_set) * 256), int(char_set[index + len(char_set)] / len(char_set) * 256), int(char_set[index + 2 * len(char_set)] / len(char_set) * 256)]
TypeError: unsupported operand type(s) for /: 'str' and 'int'
->
...
-
, 2 . , , 2.
, , , 2. encode_image():
#
def encode_image(image_path, char_set):
#
image = Image.open(image_path)
#
width, height = image.size
#
encoded_image = ""
#
for y in range(height):
for x in range(width):
# RGB-
rgb = image.getpixel((x, y))
#
index = (int(rgb[0] / 256 * len(char_set)) + int(rgb[1] / 256 * len(char_set)) * 256 + int(rgb[2] / 256 * len(char_set)) * 256 * 256) % len(char_set)
#
char = char_set[index]
# , 2
if len(encoded_image) < 2 or encoded_image[-1] != encoded_image[-2] or encoded_image[-1] != char:
encoded_image += char
else:
# 2 ,
index += 1
char = char_set[index % len(char_set)]
encoded_image += char
return encoded_image
2 .
- txt
- txt
jpg
ϩZ"M&Gߐ2`nL\[oik6in#c³%[x#A^>ݦkL
֟qW7[O ÿҏo
6*0WC21 U/ X:ޘRȤ'en&kՊ>wRBK/ƗhjX7
ю NA9o_orkiȩC}3ѶnNaM 5-34/9ⴧwm|uE*JDDn|.QEHF4mZ6[=i3aTX) ?UbP>m/^ڰښO$ٝUF>tY+ f#'R/Y~
...