Работа с изображениями в формате JPG и PNG в Tkinter без использования библиотеки PIL (Pillow) может быть сложной, так как Tkinter изначально не поддерживает эти форматы напрямую. Однако, можно использовать сторонние библиотеки, такие как tkinterdnd2 или tkdnd.
import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD
class ImageViewer(TkinterDnD):
def __init__(self):
super().__init__()
self.title("Image Viewer")
self.geometry("800x600")
self.canvas = tk.Canvas(self, bg="white")
self.canvas.pack(fill=tk.BOTH, expand=True)
self.canvas.drop_target_register(DND_FILES)
self.canvas.dnd_bind('<>', self.on_drop)
def on_drop(self, event):
file_path = event.data
if file_path.endswith(('.jpg', '.png')):
self.display_image(file_path)
def display_image(self, file_path):
with open(file_path, 'rb') as file:
image_data = file.read()
image = tk.PhotoImage(data=image_data)
self.canvas.create_image(0, 0, anchor=tk.NW, image=image)
self.canvas.image = image
if __name__ == "__main__":
app = ImageViewer()
app.mainloop()
tk.PhotoImage поддерживает только форматы GIF, PGM, PPM и PNG. Если нужно работать с JPG, может понадобиться конвертировать изображение в формат, поддерживаемый tk.PhotoImage, или использовать дополнительные библиотеки для декодирования JPG.