-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.py
36 lines (27 loc) · 1.49 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from Utilities.read_image import read_image
from DEFS import CompressionMode
from encoder import encoder
import numpy as np
from Utilities.calculate_compression_ratio import calculate_comprrssion_ratio
from decoder import decoder
from Utilities.save_image import save_image
import matplotlib.pyplot as plt
def main():
# ==================== Read Image =======================
N = 8
image_path = "./palestine.jpg"
image_array, vertical_padding, horizontal_padding = read_image(image_path, N)
# ==================== Encode Image =======================
compression_mode = CompressionMode.LOW
encoded_data, huffman_tree, no_vertical_blocks ,no_horizontal_blocks = encoder(image_array, N, compression_mode)
# ==================== Decode Image =======================
decoded_image = decoder(encoded_data, N, compression_mode, vertical_padding, horizontal_padding, huffman_tree,no_vertical_blocks,no_horizontal_blocks)
# ==================== Calculate Compression Ratio =======================
compression_ratio = calculate_comprrssion_ratio(image_array,encoded_data)
print(f"Compression ratio: {compression_ratio}:1")
# ==================== Show and Save Image =======================
# save the decoded image as jpg
original_image = image_array[:decoded_image.shape[0] - vertical_padding, :decoded_image.shape[1] - horizontal_padding]
save_image(original_image, decoded_image, compression_ratio, compression_mode)
if __name__ == "__main__":
main()