def lighten_area_around(self, image, offset, x, y): half_radius = self.parent.reductionNeighborhoodWalkify.value() min_x = Mapping.clip_value(x - half_radius, half_radius, image.width() - half_radius) max_x = Mapping.clip_value(x + half_radius, half_radius, image.width() - half_radius) min_y = Mapping.clip_value(y - half_radius, half_radius, image.height() - half_radius) max_y = Mapping.clip_value(y + half_radius, half_radius, image.height() - half_radius) adjustbrightness = self.parent.localBrightnessAdjustmentWalkify.value() myset = set() for s in range(int(round(half_radius / 2))): myset.add(s) myset.add(-s) for comb in combinations(myset, 2): inv_distance = 2 * max(myset) - (abs(comb[0]) + abs(comb[1])) modfactor = half_radius * inv_distance self.lighten_one_pixel(image, adjustbrightness * modfactor, x + comb[0], y + comb[1]) for el in myset: inv_distance = 2 * max(myset) - (2 * abs(el)) modfactor = half_radius * inv_distance self.lighten_one_pixel(image, adjustbrightness * modfactor, x + el, y + el)
def find_darkest_neighbor(self, image, cx, cy): darkest_neighbor = 256 half_radius = self.parent.reductionNeighborhoodWalkify.value() min_x = Mapping.clip_value(cx - half_radius, half_radius, image.width() - half_radius) min_y = Mapping.clip_value(cy - half_radius, half_radius, image.height() - half_radius) max_x = Mapping.clip_value(cx + half_radius, half_radius, image.width() - half_radius) max_y = Mapping.clip_value(cy + half_radius, half_radius, image.height() - half_radius) for x in range(min_x, max_x + 1): for y in range(min_y, max_y + 1): distance = sqrt((x - cx)**2 + (y - cy)**2) if distance < half_radius: currcolor = qGray(image.pixel(x, y)) + random() * 0.01 if currcolor < darkest_neighbor: darkest_x = x darkest_y = y darkest_neighbor = currcolor return darkest_x, darkest_y, darkest_neighbor
def lighten_one_pixel(self, image, offset, x, y): currcolor = qGray(image.pixel(x, y)) newcolor = Mapping.clip_value(currcolor + offset, 0, 255) image.setPixelColor(x, y, QColor(newcolor, newcolor, newcolor))