Stego / app.py
YassineYousfi
V0 WIP
6aea31a
raw
history blame
1.21 kB
import gradio as gr
import stc
import numpy as np
import imageio
from scipy import signal
import cv2
from PIL import Image
def HILL(input_image, operation, message, key):
input_image.seek(0)
buffer = input_image.read()
I = cv2.imdecode(np.frombuffer(buffer, np.uint8), 1)
I = cv2.cvtColor(I,cv2.COLOR_BGR2GRAY)
cv2.imwrite('tmp/file.png',I)
if operation == 'decode':
stc.extract('tmp/file.png', key, 'tmp/output.txt')
return 'tmp/output.txt'
else:
H = np.array(
[[-1, 2, -1],
[ 2, -4, 2],
[-1, 2, -1]])
L1 = np.ones((3, 3)).astype('float32')/(3**2)
L2 = np.ones((15, 15)).astype('float32')/(15**2)
costs = signal.convolve2d(I, H, mode='same')
costs = abs(costs)
costs = signal.convolve2d(costs, L1, mode='same')
costs = 1/costs
costs = signal.convolve2d(costs, L2, mode='same')
costs[costs == np.inf] = 1
stc.embed('tmp/file.png', costs, message, key, 'tmp/stego.png')
return 'tmp/stego.png'
iface = gr.Interface(HILL, ["file", gr.inputs.Radio(["encode", "decode"]), "text", "text"], "file")
iface.launch(share=False)