def autocrop(self): border = 255 rr = (self.region_rect.left, self.region_rect.top, self.region_rect.right, self.region_rect.bottom) imp = self.image.crop(rr) if self.acbwmode: bw = imp.convert('1') else: bw = imp.convert('L') bw = bw.filter(ImageFilter.MedianFilter) bg = Image.new('1', imp.size, border) diff = ImageChops.difference(bw, bg) bbox = diff.getbbox() brect = Rect((self.x0 + bbox[0], self.y0 + bbox[1]), (self.x0 + bbox[2], self.y0 + bbox[3])) brect = brect.valid_rect(self.w, self.h) self.crop_rects.append(brect) self.n = self.n + 1 self.canvas.delete(tk.ALL) self.displayimage()