mirror of
https://github.com/KevinMidboe/knowit_julekalender-2018.git
synced 2025-10-29 09:40:18 +00:00
55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
from PIL import Image
|
|
import numpy as np
|
|
import itertools
|
|
|
|
input_image = os.path.join(os.path.dirname(__file__), 'images/input-pokemon_jakt.png')
|
|
output_image = os.path.join(os.path.dirname(__file__), 'images/output-pokemon_jakt.png')
|
|
|
|
def main():
|
|
LSB = 4
|
|
image = Image.open(input_image)
|
|
pixels = np.array(image)
|
|
width, height, channels = pixels.shape
|
|
|
|
for i,j,k in [(i,j,k) for i in range(width) for j in range(height) for k in range(channels)]:
|
|
value = int(f'{pixels[i][j][k]:b}'[-LSB:], 2)
|
|
pixels[i,j,k] = (255 // 2**LSB) * value
|
|
|
|
image = Image.fromarray(pixels)
|
|
image.save(output_image)
|
|
return output_image
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
|
|
|
|
'''
|
|
_____
|
|
tests
|
|
|
|
* compare the hash values of images
|
|
* compare all bits in every channel
|
|
calls = [hashCompare]
|
|
'''
|
|
|
|
'''
|
|
___
|
|
previous attempts
|
|
|
|
for i, j, in itertools.product(width, height, channels):
|
|
encoded_value = int(f'{pixels[i][j][k]:b}'[-LSB:], 2)
|
|
rbg_lsb_ratio = 255 // 2**LSB
|
|
pixels[i][j][k] = rbg_lsb_ratio * encoded_value
|
|
|
|
|
|
for i in range(width):
|
|
for j in range(height):
|
|
for k in range(channels):
|
|
encoded_value = int(f'{pixels[i][j][k]:b}'[-LSB:], 2)
|
|
rbg_lsb_ratio = 255 // 2**LSB
|
|
pixels[i][j][k] = rbg_lsb_ratio * encoded_value
|
|
|
|
''' |