Ich habe verschiedene Bilder, die in einem Canvas durchgeschaltet werden können.
Auf die verschieden Bilder kann einen Lupe angewendet werden.
Anregung: https://stackoverflow.com/questions/543 ... vas-widget habe ich mir hier geholt.
Ich habe eine feste Größe für das Canvas, in welchem das Bild/die Bilder insgesamt zu sehen ist.
Wenn ich mit der Maus hinein zoome, wird der Bildausschnitt gezoomed, die Qualität leidet im Zoomausschnitt aber etwas.
Ich versuche nun, die Bildqualität für den gezoomten Bereich zu erhöhen, weiß aber nicht, wie ich das anpacken soll.
Die Images die ich verwende, haben alle ca. 2MB. Die sind doch genug Pixel, um es scharf anzeigen zu lassen!

Codeausschnitt gibs hier:
Code: Alles auswählen
def wheel(self, event):
if self.image:
if event.delta > 0:
if self.zoom_cycle != 4:
self.zoom_cycle += 1
elif event.delta < 0:
if self.zoom_cycle != 0:
self.zoom_cycle -= 1
self.motion(event)
def leave(self, _):
self.zoom_cycle = 0
if self.zoom_img_id:
self.image_canvas.delete(self.zoom_img_id)
def motion(self, event):
if self.zoom_img_id:
self.image_canvas.delete(self.zoom_img_id)
if self.zoom_cycle != 0:
tmp = None
w, h = 120, 120
x, y = event.x, event.y
zoom_1 = 56
zoom_2 = 40
zoom_3 = 25
zoom_4 = 16
if self.zoom_cycle == 1:
tmp = self.image.crop(
(x - zoom_1, y - zoom_1, x + zoom_1, y + zoom_1)).resize((w, h), Image.ANTIALIAS)
elif self.zoom_cycle == 2:
tmp = self.image.crop(
(x - zoom_2, y - zoom_2, x + zoom_2, y + zoom_2)).resize((w, h), Image.ANTIALIAS)
elif self.zoom_cycle == 3:
tmp = self.image.crop(
(x - zoom_3, y - zoom_3, x + zoom_3, y + zoom_3)).resize((w, h), Image.ANTIALIAS)
elif self.zoom_cycle == 4:
tmp = self.image.crop(
(x - zoom_4, y - zoom_4, x + zoom_4, y + zoom_4)).resize((w, h), Image.ANTIALIAS)
self.zoom_img = ImageTk.PhotoImage(tmp)
self.zoom_img_id = self.image_canvas.create_image(x, y-15, image=self.zoom_img)