encryptare + adaugare de imagini
This commit is contained in:
@@ -1,15 +1,10 @@
|
||||
import tkinter as tk
|
||||
|
||||
import emoji
|
||||
from PIL import Image, ImageTk
|
||||
from PIL import Image, ImageTk, UnidentifiedImageError
|
||||
import io
|
||||
import base64
|
||||
|
||||
import emoji
|
||||
|
||||
class MessageView(tk.Frame):
|
||||
"""
|
||||
This view is the message that appears in main windows of the chat. This is configured to hold text and images.
|
||||
"""
|
||||
def __init__(self, master, message, current_logged_user, user_data, *args, **kwargs):
|
||||
super().__init__(master, *args, **kwargs)
|
||||
self.current_logged_user = current_logged_user
|
||||
@@ -18,49 +13,49 @@ class MessageView(tk.Frame):
|
||||
|
||||
def create_widgets(self, message):
|
||||
is_sent_by_current_user = 1
|
||||
sender_name = None
|
||||
if is_sent_by_current_user:
|
||||
sender_name = self.current_logged_user['username']
|
||||
else:
|
||||
sender_name = self.user_data['username']
|
||||
|
||||
message_frame = tk.Frame(self) # Set a background color for the message frame
|
||||
message_label = None
|
||||
image_label = None
|
||||
sender_name = (
|
||||
self.current_logged_user["username"]
|
||||
if is_sent_by_current_user
|
||||
else self.user_data["username"]
|
||||
)
|
||||
|
||||
message_frame = tk.Frame(self)
|
||||
pack = None
|
||||
|
||||
match message['message_type']:
|
||||
case 'text':
|
||||
decoded_message = self.decode_emoji(f"sender: {sender_name}\nmessage: {message['message']}")
|
||||
pack = tk.Label(message_frame, text=decoded_message, bg='white')
|
||||
case 'image':
|
||||
decoded_image = self.decode_image(message['message'])
|
||||
match message["message_type"]:
|
||||
case "text":
|
||||
decoded_message = self.decode_emoji(
|
||||
f"sender: {sender_name}\nmessage: {message['message']}"
|
||||
)
|
||||
pack = tk.Label(message_frame, text=decoded_message, bg="white")
|
||||
self.decoded_message = decoded_message # Keep a reference to prevent garbage collection
|
||||
case "image":
|
||||
decoded_image = self.decode_image(message["message"])
|
||||
pack = tk.Label(message_frame, image=decoded_image)
|
||||
pack.image = decoded_image # Keep a reference to prevent garbage collection
|
||||
|
||||
pack.pack()
|
||||
|
||||
if is_sent_by_current_user:
|
||||
alignment = 'right'
|
||||
alignment = "right"
|
||||
else:
|
||||
alignment = 'left'
|
||||
alignment = "left"
|
||||
|
||||
message_frame.pack(side=alignment, padx=5, pady=5)
|
||||
|
||||
def decode_emoji(self, message):
|
||||
emoji_mapping = {
|
||||
':)': '😊',
|
||||
':(': '☹️',
|
||||
':D': '😃',
|
||||
':P': '😛',
|
||||
';)': '😉',
|
||||
'XD': '😆',
|
||||
'<3': '❤️',
|
||||
'O:)': '😇',
|
||||
':/': '😕',
|
||||
':*': '😘',
|
||||
'8)': '😎',
|
||||
":)": "😊",
|
||||
":(": "☹️",
|
||||
":D": "😃",
|
||||
":P": "😛",
|
||||
";)": "😉",
|
||||
"XD": "😆",
|
||||
"<3": "❤️",
|
||||
"O:)": "😇",
|
||||
":/": "😕",
|
||||
":*": "😘",
|
||||
"8)": "😎",
|
||||
}
|
||||
|
||||
for emoji_string, unicode_character in emoji_mapping.items():
|
||||
@@ -68,8 +63,19 @@ class MessageView(tk.Frame):
|
||||
return message
|
||||
|
||||
def decode_image(self, encoded_image):
|
||||
# Assume encoded_image is a base64-encoded image
|
||||
decoded_image = base64.b64decode(encoded_image)
|
||||
image = Image.open(io.BytesIO(decoded_image))
|
||||
image = ImageTk.PhotoImage(image)
|
||||
return image
|
||||
try:
|
||||
decoded_image = base64.b64decode(encoded_image)
|
||||
image_io = io.BytesIO(decoded_image)
|
||||
|
||||
original_image = Image.open(image_io)
|
||||
resized_image = original_image.resize((100, 100), Image.ADAPTIVE)
|
||||
|
||||
self.image = resized_image
|
||||
image = ImageTk.PhotoImage(self.image)
|
||||
return image
|
||||
except UnidentifiedImageError as e:
|
||||
print(f"Error decoding image: {e}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Unexpected error: {e}")
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user